Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  build-binutils.sh   Sprache: Shell

 
#!/bin/bash

set -x

make_flags="-j$(nproc) MAKEINFO=true"

root_dir="$1"

cd $root_dir/binutils-source

patch -p1 <<'EOF'
From 4476cc67e657d6b26cd453c555a611f1ab956660 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Thu, 30 Aug 2018 09:21:57 -0700
Subject: [PATCH] ld: Lookup section in output with the same name

When there are more than one input sections with the same section name,
SECNAME, linker picks the first one to define __start_SECNAME and
__stop_SECNAME symbols.  When the first input section is removed by
comdat group, we need to check if there is still an output section
with section name SECNAME.

 PR ld/23591
 * ldlang.c (undef_start_stop): Lookup section in output with
 the same name.
---
 ld/ldlang.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/ld/ldlang.c b/ld/ldlang.c
index 8878ccd..d644b56 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -6097,6 +6097,24 @@ undef_start_stop (struct bfd_link_hash_entry *h)
       || strcmp (h->u.def.section->name,
    h->u.def.section->output_section->name) != 0)
     {
+      asection *sec = bfd_get_section_by_name (link_info.output_bfd,
+            h->u.def.section->name);
+      if (sec != NULL)
+ {
+   /* When there are more than one input sections with the same
+      section name, SECNAME, linker picks the first one to define
+      __start_SECNAME and __stop_SECNAME symbols.  When the first
+      input section is removed by comdat group, we need to check
+      if there is still an output section with section name
+      SECNAME.  */
+   asection *i;
+   for (i = sec->map_head.s; i != NULL; i = i->map_head.s)
+     if (strcmp (h->u.def.section->name, i->name) == 0)
+       {
+  h->u.def.section = i;
+  return;
+       }
+ }
       h->type = bfd_link_hash_undefined;
       h->u.undef.abfd = NULL;
     }
-- 
2.17.1
EOF

cd ..

TARGETS="aarch64-linux-gnu arm-linux-gnueabi i686-w64-mingw32"

gcc_major=8
if [ -d $MOZ_FETCHES_DIR/sysroot ]; then
  # Don't silently use a non-existing directory for C++ headers.
  [ -d $MOZ_FETCHES_DIR/sysroot/usr/include/c++/$gcc_major ] || exit 1
  export CFLAGS="-g -O2 --sysroot=$MOZ_FETCHES_DIR/sysroot"
  export CXXFLAGS="$CFLAGS -isystem $MOZ_FETCHES_DIR/sysroot/usr/include/c++/$gcc_major -isystem $MOZ_FETCHES_DIR/sysroot/usr/include/x86_64-linux-gnu/c++/$gcc_major"
  export LDFLAGS="-L$MOZ_FETCHES_DIR/sysroot/lib/x86_64-linux-gnu -L$MOZ_FETCHES_DIR/sysroot/usr/lib/x86_64-linux-gnu -L$MOZ_FETCHES_DIR/sysroot/usr/lib/gcc/x86_64-linux-gnu/8"
fi


# Build target-specific GNU as ; build them first so that the few documentation
# files they install are overwritten by the full binutils build.

for target in $TARGETS; do

  mkdir binutils-$target
  cd binutils-$target

  ../binutils-source/configure --prefix /tools/binutils/ --disable-gold --disable-ld --disable-binutils --disable-gprof --disable-nls --target=$target $EXTRA_CONFIGURE_FLAGS || exit 1
  make $make_flags || exit 1
  make install $make_flags DESTDIR=$root_dir || exit 1

  cd ..
done

# Build binutils
mkdir binutils-objdir
cd binutils-objdir

# --enable-targets builds extra target support in ld.
# Enabling aarch64 support brings in arm support, so we don't need to specify that too.
../binutils-source/configure --prefix /tools/binutils/ --enable-gold --enable-plugins --disable-nls --enable-targets="$TARGETS" $EXTRA_CONFIGURE_FLAGS || exit 1
make $make_flags || exit 1
make install $make_flags DESTDIR=$root_dir || exit 1

cd ..

# Make a package of the built binutils
cd $root_dir/tools
tar caf $root_dir/binutils.tar.zst binutils/

Messung V0.5
C=98 H=47 G=76

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge