summaryrefslogtreecommitdiff
path: root/core/binutils/PKGBUILD
blob: 9e9b625cb37130a897fdefca9fcc5fd1fca7134d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
eval "$(
  declare -f build | \
    sed '
      s/--enable/--enable-64-bit-bfd \0/
      s,https://bugs.archlinux.org/,https://bugs.archlinux32.org/,
    '
)"

# segfaults in ld of binutils 2.30 needs the binutils_2_30 branch
# for now, see https://sourceware.org/bugzilla/show_bug.cgi?id=23194
# this patch was done by diffing the branch against the tag and removing
# some conflicts, also 0003-PR22836-r-s-doesnt-work-with-g3-using-GCC-7.patch
# needs disabling because it has already been cherry-picked into the branch.
# cherry-picking onlt the fiy for P23194 leads to assertion violations in
# the GOT, so this was not done.
# also conflicted with parts of the gold ld patch 0004-PR22868, eliminated
# conflicts by picking only the necessary things..
source+=(binutils-2.30-glibc-segfault.patch)
md5sums+=('e384a80d85b645c41d05eaae1a81dc03')

eval "$(
  declare -f prepare | \
    sed '
      s/.*0003-PR22836/#\0/
      /0004-PR22868/a patch -p1 -i ${srcdir}/binutils-2.30-glibc-segfault.patch
    '
)"

# "configure: error: debuginfod is missing or unusable"
eval "$(
  declare -f build | \
    sed '
      s/--with-debuginfod//g
    '
)"

# should be in a cross-compilation binutils for targeting EFI binaries IMHO,
# not in the main platform binutils (see also https://bugs.archlinux.org/task/42540)
eval "$(
  declare -f build | \
    sed '
      s/--enable-targets=x86_64-pep//g
    '
)"

# --enable-64-bit-bfd makes sense only for 64-bit targets IMHO
eval "$(
  declare -f build | \
    sed '
      s/--enable-64-bit-bfd//g
    '
)"

# i486-specific
if [ "${CARCH}" = "i486" ]; then
  # disable CET (Control Flow instructions endbr32/enbr64)
  eval "$(
    declare -f build | \
      sed '
        s,configure",configure" --enable-cet=no,
      '
  )"
else
  # explicitely enable CET (Control Flow instructions endbr32/enbr64)
  # avoid "corrupt GNU_PROPERTY_TYPE (5) size: 0" warnings,
  # see:
  # https://bbs.archlinux32.org/viewtopic.php?pid=6160#p6160
  # https://bugs.archlinux32.org/index.php?do=details&task_id=82
  #
  eval "$(
    declare -f build | \
      sed '
        s,configure",configure" --enable-cet=yes,
      '
  )"
fi