Mike Frysinger [Sun, 17 Feb 2019 23:25:50 +0000 (18:25 -0500)]
travis: test against versions 2.27 through 2.31.1
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Alexey Neyman [Sat, 29 Sep 2018 20:12:08 +0000 (13:12 -0700)]
Create more symlinks to BFD headers
... diagnostics.h and bfd_stdint.h, included by <bfd/bfd.h>.
Signed-off-by: Alexey Neyman <stilor@att.net>
Mike Frysinger [Sun, 17 Feb 2019 21:14:33 +0000 (16:14 -0500)]
elf2flt: drop v850 reloc ifdefs
The binutils elf/v850.h header has used the elf/reloc-macros.h helpers
to create R_V850_xxx enums. They haven't been defines for a long time.
Trying to use #ifdef checks on them doesn't work.
This means we require binutils-2.24+ now which was released in 2013.
We can see if anyone notices if we need to support older versions.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike Frysinger [Sun, 17 Feb 2019 20:41:18 +0000 (15:41 -0500)]
travis: build all available versions of binutils
This helps make sure we work across a variety of versions.
Alexey Neyman [Fri, 15 Feb 2019 04:12:34 +0000 (20:12 -0800)]
Check `output_elf' for being NULL
... before passing it to unlink(). GCC8.2 detects that one of the
branches in do_final_link() does not initialize it from its original
value, NULL.
Signed-off-by: Alexey Neyman <stilor@att.net>
Mike Frysinger [Mon, 20 Mar 2017 04:04:18 +0000 (21:04 -0700)]
Merge pull request #7 from stilor/fix-cygwin-build-2
Fix cygwin and macos builds
Alexey Neyman [Mon, 27 Feb 2017 09:20:10 +0000 (01:20 -0800)]
Symlink required binutils/BFD headers to local dir
... to minimize the chance of clashes with system headers.
Also, remove the -lcygwin from Makefile.in: this breaks canadian
build on cygwin, as it tries to pass -lcygwin into non-Cygwin host
CC. This chunk pre-dates the addition of -lc into configure.ac and
passing -lc should be sufficient (it works for me).
Signed-off-by: Alexey Neyman <stilor@att.net>
Mike Frysinger [Wed, 1 Mar 2017 06:56:29 +0000 (23:56 -0700)]
elf2flt: clean up elf headers dependencies
The only reason we included cygwin-elf.h & elf.h was for the various
target reloc defines. However, since these are all provided by the
bfd library which we already include, we can switch to using that for
every target.
Now we don't have any dep on the host's ELF headers (either existing,
or being up-to-date).
Mike Frysinger [Wed, 1 Mar 2017 06:55:49 +0000 (23:55 -0700)]
travis: drop unused TARGETS variable
Mike Frysinger [Wed, 1 Mar 2017 06:45:04 +0000 (23:45 -0700)]
travis: update to binutils-2.26.1
Alexey Neyman [Sat, 4 Feb 2017 06:01:48 +0000 (22:01 -0800)]
check for libz first
If building statically, linking libz before libbfd results in unresolved
symbols (compress/compressBound in libbfd.a).
Signed-off-by: Alexey Neyman <stilor@att.net>
Mike Frysinger [Mon, 12 Dec 2016 05:35:04 +0000 (00:35 -0500)]
elf2flt: fix unused warning for e1/bfin targets
The one call site for this func is inside of an e1/bfin ifdef check,
so add the same logic to the definition to fix a build error:
elf2flt.c:212:1: error: ‘get_symbol_offset’ defined but not used [-Werror=unused-function]
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike Frysinger [Tue, 13 Sep 2016 07:03:46 +0000 (03:03 -0400)]
elf2flt: use fatal() instead of printf();exit(1)
We've got a help function specifically for showing fatal error
messages and then exiting, so use it.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike Frysinger [Tue, 13 Sep 2016 06:56:57 +0000 (02:56 -0400)]
elf2flt: mark all funcs/vars static
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike Frysinger [Tue, 13 Sep 2016 06:46:35 +0000 (02:46 -0400)]
flthdr: drop unused mkstemp define
This file stopped using mkstemp a while back, so drop this hack
that is no longer needed.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike Frysinger [Tue, 13 Sep 2016 06:37:14 +0000 (02:37 -0400)]
Merge pull request #3 from KirillSmirnov/uninitialized-var
My gcc is 5.4.0, target is m68k, binutils 2.26.
elf2flt.c: In function 'output_relocs':
elf2flt.c:1604:5: error: 'sym_reloc_size' may be used uninitialized in this function [-Werror=maybe-uninitialized]
printf(" RELOC[%d]: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
Kirill Smirnov [Mon, 12 Sep 2016 10:37:26 +0000 (13:37 +0300)]
Fix an uninitialized variable.
Signed-off-by: Kirill Smirnov <kirill.k.smirnov@gmail.com>
Greg Ungerer [Fri, 19 Aug 2016 13:49:51 +0000 (23:49 +1000)]
elf2flt: fix relocation support for R_ARM_TARGET types
R_ARM_TARGET1 (and I think R_ARM_TARGET2) relocation types should be
treated in the same way as R_ARM_ABS32. Fix them to write out the addend
to the flat binary in network byte order.
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Greg Ungerer [Thu, 18 Aug 2016 06:36:14 +0000 (16:36 +1000)]
elf2flt: support ARM R_ARM_V4BX relocation type
Trivially add support for the ARM R_ARM_V4BX relocation type.
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Mike Frysinger [Wed, 20 Apr 2016 15:13:56 +0000 (11:13 -0400)]
Merge pull request #2 from mcoquelin-stm32/master
Fix buffer overflow in output_relocs()
Maxime Coquelin [Wed, 20 Apr 2016 08:00:39 +0000 (10:00 +0200)]
Fix buffer overflow in output_relocs()
This crash is seen when trying to build uclibc for a ARMV7-M platform on a
x86-64 host:
make[1]: Entering directory `<...>/build/uclibc-1.0.14'
CC utils/getconf
*** buffer overflow detected ***: <...>/bin/elf2flt terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7338f)[0x2ad3be5f738f]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x2ad3be68ec9c]
/lib/x86_64-linux-gnu/libc.so.6(+0x109b60)[0x2ad3be68db60]
/lib/x86_64-linux-gnu/libc.so.6(+0x109069)[0x2ad3be68d069]
/lib/x86_64-linux-gnu/libc.so.6(_IO_default_xsputn+0xbc)[0x2ad3be5ff70c]
/lib/x86_64-linux-gnu/libc.so.6(_IO_vfprintf+0xaef)[0x2ad3be5ce7df]
/lib/x86_64-linux-gnu/libc.so.6(__vsprintf_chk+0x84)[0x2ad3be68d0f4]
/lib/x86_64-linux-gnu/libc.so.6(__sprintf_chk+0x7d)[0x2ad3be68d04d]
<...>/bin/elf2flt[0x403cda]
<...>/bin/elf2flt[0x4030a4]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x2ad3be5a5ec5]
<...>/bin/elf2flt[0x403642]
...
In output_relocs, we do "sprintf(&addstr[0], "+0x%lx", ...)", with addrstr
being a 16 bytes array.
On 64bits hosts, in the unlikely case the value overflows 32bits, the buffer
may overflow.
Indeed, the maximum theorical size is 20 bytes (16 bytes for the value + 3
bytes for "+0x" + the end of string marker).
The reason the value overflows 32bits is yet to be understood, as the ARMV7-M
is 32bits architecture, but this patch first ensure the sprintf call is robust
enough.
Signed-off-by: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Waldemar Brodkorb [Mon, 14 Mar 2016 05:01:58 +0000 (06:01 +0100)]
allow to build arm flat binaries
Add patchset from ptxdist which is required to produce working
ARM flat binaries. Tested with busybox on Kinetis K70.
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Mike Frysinger [Thu, 14 Jan 2016 13:15:25 +0000 (08:15 -0500)]
README: update file listing
Mike Frysinger [Thu, 14 Jan 2016 13:13:16 +0000 (08:13 -0500)]
travis: add xtensa to test list
Mike Frysinger [Thu, 14 Jan 2016 13:04:17 +0000 (08:04 -0500)]
Merge pull request #1 from jserv/master
Use new FSF address in GPL notices
Jim Huang [Thu, 14 Jan 2016 09:44:43 +0000 (17:44 +0800)]
Use new FSF address in GPL notices
Correct the address of Free Software Foundation via
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
Waldemar Brodkorb [Wed, 30 Dec 2015 23:55:48 +0000 (00:55 +0100)]
Add xtensa support
This is forward ported version of patch from 2006' elf2flt by
Oskar Schirmer <os@emlix.com>.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Greg Ungerer [Fri, 8 Jan 2016 01:36:17 +0000 (11:36 +1000)]
README.md: update email addresses
The @snapgear.com email addresses have not worked for years. Replace
them with up to data contact info.
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Yoshinori Sato [Wed, 30 Dec 2015 23:55:47 +0000 (00:55 +0100)]
R_H8_DIR24 fix
R_H8_DIR24A8 / R_H8_DIR24R8 keep all byte.
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Yoshinori Sato [Wed, 30 Dec 2015 23:55:46 +0000 (00:55 +0100)]
H8/300 relocation fix
Add new relocation R_H8_DISP32A16.
hi-byte clear on R_H8_DIR32 R_H8_DIR24A8 R_H8_DIR24R8 R_H8_DIR32A16 R_H8_DISP32A16
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Greg Ungerer [Thu, 7 Jan 2016 11:48:16 +0000 (21:48 +1000)]
configure: regenerate configure script
Recent change to configure.ac to remove prefix symbol for h8300 requires
regeneration of the local configure script.
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Waldemar Brodkorb [Wed, 30 Dec 2015 23:55:44 +0000 (00:55 +0100)]
recent binutils for h8/300 no longer use prefix
Remove SYMBOL_PREFIX for h8/300.
Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
Signed-off-by: Yoshinori Sato <ysato@users.souceforge.jp>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Greg Ungerer [Wed, 6 Jan 2016 01:20:10 +0000 (11:20 +1000)]
configure: regenerate configure script
Recent changes to configure.ac to add a dlopen check require a regeneration
of the local configure script.
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Waldemar Brodkorb [Tue, 5 Jan 2016 18:13:12 +0000 (19:13 +0100)]
dlopen is used by newer binutils, so check for it
Add a check for dlopen to configure.ac
Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Mike Frysinger [Fri, 18 Dec 2015 02:55:28 +0000 (21:55 -0500)]
enable travis builds w/github
Mike Frysinger [Thu, 24 Dec 2015 06:25:31 +0000 (01:25 -0500)]
README: use markdown
This makes the file render nicely in github while still being readable.
Mike Frysinger [Thu, 24 Dec 2015 05:02:05 +0000 (00:02 -0500)]
start a testsuite
Mike Frysinger [Thu, 24 Dec 2015 04:38:24 +0000 (23:38 -0500)]
standardize usage behavior
Make sure the tools respect the -h (help) option, and exit 0 & use stdout
when called that way. For all other cases, exit 1 & use stderr.
Mike Frysinger [Thu, 24 Dec 2015 04:31:42 +0000 (23:31 -0500)]
flthdr: constify a few strings
Mike Frysinger [Thu, 24 Dec 2015 04:30:31 +0000 (23:30 -0500)]
flthdr: fix print output w/no flags
If the file has no flags, make sure we still include the closing paren
and newline in the output.
Mike Frysinger [Fri, 18 Dec 2015 05:07:21 +0000 (00:07 -0500)]
configure: build with -Werror by default
People can pass --disable-werror to turn this off. But this will help
keep the main development builds clean with new code coming in.
Mike Frysinger [Fri, 18 Dec 2015 05:06:26 +0000 (00:06 -0500)]
elf2flt/ld-elf2flt: clean up build time warnings
Mike Frysinger [Fri, 18 Dec 2015 04:59:29 +0000 (23:59 -0500)]
elf2flt: v850: fix build w/newer binutils
We need to include the v850 header directly for the right relocs,
and handle the renamed abs32 reloc.
Mike Frysinger [Fri, 18 Dec 2015 02:51:49 +0000 (21:51 -0500)]
install: add DESTDIR support
Mike Frysinger [Fri, 18 Dec 2015 02:43:45 +0000 (21:43 -0500)]
gitignore: update files
Mike Frysinger [Fri, 18 Dec 2015 02:40:41 +0000 (21:40 -0500)]
autotools: regenerate
Mike Frysinger [Fri, 18 Dec 2015 02:39:35 +0000 (21:39 -0500)]
configure: rename input newer versions
Newer autotools wants .ac suffix and warns/errors when using .in.
Greg Ungerer [Thu, 4 Oct 2012 02:32:38 +0000 (02:32 +0000)]
From: Larry Baker <baker@usgs.gov>
The _stack_start symbol needs to be in the same flatmem memory region
as text/data/bss, otherwise it will not end up with the correct address.
Direct the section into the flatmem region.
Signed-of-by: Greg Ungerer <gerg@uclinux.org>
David McCullough [Mon, 4 Apr 2011 01:17:17 +0000 (01:17 +0000)]
The GNU linker uses -v as a shortcut to --version, not --verbose. So atm,
if you run `ld -v` to get the linker version, ld-elf2flt throws out a lot
of verbose debugging information. So drop the -v checking in ld-elf2flt
to keep from breaking systems that parse the linker version.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 15 Feb 2011 23:22:26 +0000 (23:22 +0000)]
the attached patch is needed for the recent elf2flt
on MinGW builds. The stat() cannot cope with directories
ending with the directory separator.
Regards
Stanislav Meduna <stano@meduna.org>
David McCullough [Thu, 16 Dec 2010 01:37:41 +0000 (01:37 +0000)]
The .note.ABI-tag section exists to indicate to other projects (like gdb
or library loaders) information about the target OS. It doesn't actually
contain anything that is used at runtime. So while the current linker
script gathers this into the .data section, the final FLAT doesn't include
anything from it. But tools expect to find a dedicated section in ELFs
which the current section merge prevents.^M
So give .note.ABI-tag its own output section so gdb can locate and use it.
This shouldn't change the FLAT files produced in any way.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 17 Aug 2010 04:25:26 +0000 (04:25 +0000)]
When we converted ld-elf2flt from the shell script to C, one small nuance
was missed: argv[0] contains the full path only when invoked with the full
path. This is not the same behavior for shell scripts as $0 is always the
full path to the script in question. Most of the time this isn't an issue
as gcc will invoke all of its tools (like the linker) with a full relative
path to itself. However, if we attempt to invoke the linker directly, we
can see misbehavior such as:
bfin-uclinux-ld.real: cannot open linker script file ./../lib/elf2flt.ld:
No such file or directory
So, to fix this, we lean on more libiberty functions. Specifically, the
make_relative_prefix() function. This function locates a full argv[0] by
scanning $PATH to see where it was invoked. This might sound a little
dodgy, but this is fundamental to how gcc and binutils implement support
for their runtime relocation, so it can't break ld-elf2flt without first
breaking every one else ;).
In the fall out of this fix, we can cull a bunch of local code that does
custom path parsing. So not only do we get to fix an annoying bug, we get
to shrink code in the process.
Signed-off-by: Steve Kilbane <steve@whitecrow.demon.co.uk>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 22 Jun 2010 06:12:47 +0000 (06:12 +0000)]
The current code misses checking a few args in order to determine the
default "print" mode (ktrace/l1stack/...). Rather than update a list
that people easily forget, rework the code to generically detect that
no arguments have been specified.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 11 May 2010 12:27:11 +0000 (12:27 +0000)]
The sed debug showed incorrect syntax for deletions, and the program exec
debug missed output redirection.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Greg Ungerer [Tue, 9 Mar 2010 06:19:11 +0000 (06:19 +0000)]
Here is a patch to fix a ``misunderstanding'' between the kernel (bflt
loader) and GDB; noticed on m68k / coldfire uClinux.
Lacking specific directives in the linker script, the linker *may* decide
to put .text and .data into the same segment:
Section to Segment mapping:
Segment Sections...
00 .text .data .eh_frame_hdr .eh_frame .bss
01 .eh_frame_hdr
The bflt loader in the kernel will, however, add a small extra data table
just before .data's content (cf. handling of MAX_SHARED_LIBS in
binfmt_flat.c:load_flat_file).
Now, if .text and .data are in the same segment, directly following each
other in the binary file, but have that extra data table added in the
run-time memory layout, GDB will get very confused when trying to access
items in the now-moved .data section. Without any kernel (loader) / GDB
changes, the solution is to tell the linker to always put .text and .data
into separate segments, which GDB will handle gracefully then.
Section to Segment mapping:
Segment Sections...
00 .text
01 .data .eh_frame_hdr .eh_frame .bss
Tested on m68k-uclinux (where the problem occurred) and arm-uclinuxeabi
(no regressions).
2010-02-27 Thomas Schwinge <thomas@codesourcery.com>
David McCullough [Wed, 3 Feb 2010 22:34:49 +0000 (22:34 +0000)]
use AS_HELP_STRING for all configure options
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Wed, 3 Feb 2010 22:32:46 +0000 (22:32 +0000)]
This is needed for Blackfin FLAT's to be processed properly, and apparently
some other people have seen similar behavior.
http://lists.uclibc.org/pipermail/uclibc/2009-April/042363.html
http://thread.gmane.org/gmane.linux.hardware.blackfin.toolchain.devel/1121
Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Fri, 22 Jan 2010 01:54:20 +0000 (01:54 +0000)]
Make varargs debug macros GCC-2.x compatible.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Greg Ungerer [Wed, 20 Jan 2010 02:28:18 +0000 (02:28 +0000)]
[PATCH] add Blackfin to the README
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Mon, 9 Nov 2009 23:59:26 +0000 (23:59 +0000)]
fix option order when invoking children
Poor getopt() implementations as found in many BSD/Darwin systems will
stop processing options after a non-option is encountered. That means
ld-elf2flt has to be careful to not stick options after non-options when
executing sub children. In a default setup, it will invoke `elf2flt` with
the output followed by the -a option which subsequently fails:
elf2flt: Can't open '-a': No such file or directory
David McCullough [Sun, 30 Aug 2009 11:43:03 +0000 (11:43 +0000)]
fix elf2flt dep generation in out-of-tree builds
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 14 Jul 2009 23:00:33 +0000 (23:00 +0000)]
the "all" target should not be depending on "ld-elf2flt"
anymore as this is handled through the PROG vars. it isnt a problem
for Linux systems, but when EXEEXT is set, things go boom.
Mike Frysinger <vapier.adi@gmail.com>
David McCullough [Tue, 14 Jul 2009 14:49:14 +0000 (14:49 +0000)]
the Makefile.in still refers to elf2flt.sh.in:
ld-elf2flt.sh: $(srcdir)/ld-elf2flt.sh.in
that should be:
ld-elf2flt.sh: $(srcdir)/ld-elf2flt.in
the shell script is generated without +x bits, but that is fixed
during the install step ... so probably not a real big problem
Mike Frysinger <vapier.adi@gmail.com>
David McCullough [Sun, 12 Jul 2009 23:28:58 +0000 (23:28 +0000)]
Due to shell portability issues (which is to say shell scripts are not
portable -- think Windows), convert elf2flt to C code.
I've updated this code base to the latest elf2flt tree and actually done
some basic tests -- building the three Blackfin tuples (ELF, FLAT, FDPIC)
and running programs on my Blackfin boards. This process found errors in
the original implementation as well as some of the cleanups I did.
Signed-off-by: Nathan Sidwell <nathan@codesourcery.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 7 Jul 2009 05:39:06 +0000 (05:39 +0000)]
handle more strip/verbose options.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 7 Jul 2009 04:39:42 +0000 (04:39 +0000)]
Unify the duplicated windows and other system fallback logic in stubs.h
and add some fatal() helper functions to standardize the error output when
falling over. This way we don't end up with obscure error messages with
no idea what util they are coming from.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 7 Jul 2009 00:51:21 +0000 (00:51 +0000)]
generate dependency info automatically
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 7 Jul 2009 00:49:11 +0000 (00:49 +0000)]
This cleans up the Makefile handling of the different compiler flags such
that it uses standard names across the board as well as unifies the link
method.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 7 Jul 2009 00:46:52 +0000 (00:46 +0000)]
add more common files to gitignore
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Mon, 6 Jul 2009 04:45:16 +0000 (04:45 +0000)]
the flat.h header uses things like uint32_t but does not pull in the
appropriate stdint.h header
Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 4 Jun 2009 23:16:34 +0000 (23:16 +0000)]
We renamed all the Blackfin relocs in the toolchain to match other ports
(all caps and a R_BFIN_ prefix), so update elf2flt accordingly.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Tue, 2 Jun 2009 00:09:46 +0000 (00:09 +0000)]
Rather than putting the `rm` at the end of the script before the normal
exit point, create a trap to automatically delete the script when exiting.
This way the linker script gets cleaned up whenever there is an error as
well. Otherwise every link invocation that ends in a failure could leave
behind crap. On my system, i found almost 2 million of these suckers in
my /tmp dir.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Sun, 24 May 2009 23:33:48 +0000 (23:33 +0000)]
When the relocs are larger than 16bits, incorrect values are written when
the .H/.L loading are reversed. Normally this wouldn't happen because the
gcc compiler always outputs in the same order (first hi, then lo).
Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Fri, 22 May 2009 00:22:05 +0000 (00:22 +0000)]
Add -u/-U options to control the Blackfin L1 stack flag.
Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Fri, 22 May 2009 00:20:50 +0000 (00:20 +0000)]
Add a .gitignore file
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Greg Ungerer [Thu, 21 May 2009 07:02:06 +0000 (07:02 +0000)]
Newer gcc compilers generate some ARM relocation types that we should
deal with in elf2flt.
Patch submitted by Erwin Authried <eauth@softsys.co.at>
David McCullough [Mon, 18 May 2009 22:29:44 +0000 (22:29 +0000)]
The option given to AC_ARG_ENABLE() have typos in them -- they use an
underscore instead of a dash.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Mon, 18 May 2009 22:28:20 +0000 (22:28 +0000)]
Attached is a patch that updates elf2flt support for microblaze:
* Handling for new reloc type R_MICROBLAZE_32_PCREL_LO (we can just ignore it)
* remove workarounds for old microblaze linker bugs, fixed in 2.16
Signed-off-by: John Williams <john.williams@petalogix.com>
David McCullough [Sun, 17 May 2009 23:14:54 +0000 (23:14 +0000)]
The header logic for pulling in ELF defines mixes common ELF headers and
target specific headers. In the Blackfin case, we always want to pull in
the bfin.h since most of the time, the common ELF headers do not have our
relocation defines. This fixes building for mingw targets.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 7 May 2009 23:09:35 +0000 (23:09 +0000)]
Update configure to get the new ctor/dtor option.
David McCullough [Thu, 7 May 2009 06:23:02 +0000 (06:23 +0000)]
update Blackfin port
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 7 May 2009 06:17:42 +0000 (06:17 +0000)]
only print "No relocations" when in verbose mode
Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 7 May 2009 06:16:36 +0000 (06:16 +0000)]
Since the nios2 port is the only one to use the get_gp_value() function,
stick it behind a TARGET_nios2 ifdef.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 7 May 2009 06:15:31 +0000 (06:15 +0000)]
The FLAT structure is all built on 32bit types, so make sure the elf2flt
code uses 32bit types rather than long's. This way we get correct
behavior when the host sizeof(long) is not 32bit as is on all 64bit
systems nowadays.
Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 7 May 2009 06:14:27 +0000 (06:14 +0000)]
GCC properly provides CTOR/DTOR END/LIST symbols already via the normal
crtbegin and crtend objects. Since it's been doing this for a while, add
a configure option to control the manual list found in the elf2flt linker
script and default it to off now.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 7 May 2009 03:33:32 +0000 (03:33 +0000)]
Often build systems will use -shared when creating shared libraries, so
don't barf on the flag when we see it. This makes porting efforts easier.
As a sanity check, make sure we see the -shared-lib-id flag when creating
a shared library.
Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 7 May 2009 03:32:21 +0000 (03:32 +0000)]
If there is no bss section, set bss_vma to the end of data.
Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 7 May 2009 03:31:14 +0000 (03:31 +0000)]
Newer versions of gcc (4.3+) may output additional exception tables
sections, so we need to include those as well.
Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 7 May 2009 01:04:19 +0000 (01:04 +0000)]
Rename elf2flt.ld to elf2flt.ld.in.
David McCullough [Thu, 7 May 2009 00:02:06 +0000 (00:02 +0000)]
Re-run autoconf to make sure everything is up to date.
David McCullough [Wed, 6 May 2009 23:59:01 +0000 (23:59 +0000)]
Some arches (like the Blackfin architecture) have an ABI where all symbols
get a symbol prefix. In our case, it's an underscore ("_"). So we set the
symbol prefix in the configure script and output it in the linker script and
all relevant files.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Wed, 6 May 2009 23:40:28 +0000 (23:40 +0000)]
General update for the different DWARF debugging styles gcc may output.
This only adds possible debug sections, so it shouldn't cause any
regressions.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Wed, 6 May 2009 23:39:42 +0000 (23:39 +0000)]
PT_GNU_STACK markings make no sense with FLAT binaries, so discard the
related section when linking.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Wed, 6 May 2009 23:38:22 +0000 (23:38 +0000)]
whitespace cleanup
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 27 Nov 2008 12:20:48 +0000 (12:20 +0000)]
When compiled with CVS binutils, busybox fails to execute properly.
That's because it's using --gc-sections, and the elf2flt linker script
allows the linker to remove parts of the .init and .fini sections. This
patch fixes it.
Bernd Schmidt <bernds_cb1@t-online.de>
David McCullough [Thu, 27 Nov 2008 01:08:04 +0000 (01:08 +0000)]
Kazu Hirata wrote:
> Attached is a patch to fix elf2flt.ld so that C++ programs will link
> successfully.
>
> Nathan Sidwell says:
> nathan@codesourcery.com
>
> "The problem is the .eh_frame_hdr optimization. firstly that input
> section was not mentioned in the linker script and secondly, the
> linker requires .eh_frame_hdr and .eh_frame section in the output,
> so it can optimize them. I move gcc_except_table out of .data, for
> consistency."
I've been trying to get CVS binutils up and running on the Blackfin, and
after debugging a C++ link failure I eventually tracked it down to the
elf2flt linker script, and google pointed me at this thread which I'd
completely forgotten in the meantime. The patch is needed, please apply
to elf2flt.
Bernd Schmidt <bernds_cb1@t-online.de>
David McCullough [Fri, 21 Nov 2008 11:35:07 +0000 (11:35 +0000)]
It is somewhat common for people to use the -s (strip) option to the
compiler when linking. Currently this breaks FLAT generation. There's no
real reason that I can see that we would bother keeping this, so just filter
it out to make compatibility / ease of use nicer.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Thu, 6 Nov 2008 03:33:30 +0000 (03:33 +0000)]
The Blackfin port uses _current_shared_library_p5_offset_ for the GOT offset
symbol, and it adjusts it by 1 rather than 4.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
David McCullough [Sun, 2 Nov 2008 23:14:37 +0000 (23:14 +0000)]
update configure after configure.in changes.
David McCullough [Sun, 2 Nov 2008 23:13:45 +0000 (23:13 +0000)]
We should link against -lc before any of the binutils libs (libiberty/bfd)
as those libs provide replacements for some common functions we don't really
care about (like getopt). Otherwise, if the C library does something wacky
in its API (like renaming symbols), we get a desync where some symbols are
provided by the binutils libs while others are provided by the C library.
For a concrete example, try building elf2flt on OS X 10.5. Their stupid
headers do this in unistd.h:
int getopt(int, char * const [], const char *) __asm("_" "getopt" "$UNIX2003");
The resulting elf2flt binaries are incapable of properly parsing any option
given to them.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>