summaryrefslogtreecommitdiff
path: root/core/binutils/PKGBUILD
blob: c1110778ce22b297c1d30ca0144806ae31cd4cdc (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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# add our own bug reporting URL
eval "$(
  declare -f build | \
    sed '
      s,https://bugs.archlinux.org/,https://bugs.archlinux32.org/,
    '
)"

# enable BFD for x86_64 otherwise we have problems with cross-compilation
# or compiling things like grub
eval "$(
  declare -f build | \
    sed '
      s/--enable/--enable-64-bit-bfd \0/
    '
)"

# "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,bpf-unknown-none/--enable-targets=bpf-unknown-none/g
    '
)"

# i486-specific
if [ "${CARCH}" = "i486" ]; then
  # disable CET (Control Flow instructions endbr32/enbr64)
  eval "$(
    declare -f build | \
      sed '
        s/--enable-cet/--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/--enable-cet/--enable-cet=yes/
      '
  )"
fi

# i486-specific: disable PGO/LTO build, uses too much resources,
# also disabling LTO for now, also disabling the gold linker
# as it runs out of disk space (whatever that means)
# also use the normal version of libiberty.a, there is no PIC
# version on i486 for now
if [ "${CARCH}" = "i486" ]; then
  eval "$(
    declare -f build | \
      sed '
        s/--enable-pgo-build=.*/--disable-pgo-build/
        s/--enable-lto/--disable-lto/
        s/--enable-gold/--disable-gold/
      '
    declare -f package | \
      sed '
        /pic\/libiberty.a/d
      '
  )"  
fi

# 2.38, FAIL: Build ifunc-1a with PIE -z ibtplt
eval "$(
  declare -f check | \
    sed '
      s/ check/ check || true/
    '
)"

# we get a clash with files from gdb, delete them (they should not be there?)
eval "$(
  declare -f package | \
    sed '
      /make.*install.*/ a \
        rm -rf "$pkgdir"/usr/bin/{gcore,gdb,gdb-add-index,gdbserver} \
        rm -rf "$pkgdir"/usr/include/gdb \
        rm -rf "$pkgdir"/usr/lib/libinproctrace.so \
        rm -rf "$pkgdir"/usr/share/gdb/{guile,syscalls,system-gdbinit} \
        rm -rf "$pkgdir"/usr/share/info/{annotate,gdb,stabs}.info* \
        rm -rf "$pkgdir"/usr/share/man/man1/{gcore,gdb-add-index,gdb,gdbserver}.1* \
        rm -rf "$pkgdir"/usr/share/man/man5/gdbinit.5*
    '
)"