diff options
author | Terry Guo <terry.guo@arm.com> | 2014-09-16 13:08:22 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2014-09-16 13:08:22 +0100 |
commit | 70e99720f9d558263756a482ae750b263ffd92ba (patch) | |
tree | 893354caf187ada3cfa61d98392b320a99d324ea /binutils | |
parent | 428b16bd5a3947e3a608f0c6751a8be7dbd88959 (diff) | |
download | gdb-70e99720f9d558263756a482ae750b263ffd92ba.zip gdb-70e99720f9d558263756a482ae750b263ffd92ba.tar.gz gdb-70e99720f9d558263756a482ae750b263ffd92ba.tar.bz2 |
Make the linker return an error status if it fails to merge ARM binaries with
different architecture tags. Add a test case to make sure that this works,
and update readelf so that it will not seg-fault when trying to display the
attributes of binaries with invalid architecture tags.
* elf32-arm.c (elf32_arm_merge_eabi_attributes): Return false if
failed to merge.
* ld-arm/attr-merge-arch-2.d: New test case.
* ld-arm/attr-merge-arch-2a.s: New test case source file.
* ld-arm/attr-merge-arch-2b.s: Likewise.
* ld-arm/arm-elf.exp: Run new test case.
* readelf.c (display_arm_attribute): Use unsigned int type for
tag, val and type variables.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/readelf.c | 10 |
2 files changed, 10 insertions, 5 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index c55382e..223bf11 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2014-09-16 Nick Clifton <nickc@redhat.com> + + * readelf.c (display_arm_attribute): Use unsigned int type for + tag, val and type variables. + 2014-09-16 Kuan-Lin Chen <kuanlinchentw@gmail.com> * readelf.c (decode_NDS32_machine_flags): Display ABI2 FP+. diff --git a/binutils/readelf.c b/binutils/readelf.c index ef3a68d..d9c12cc 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -11548,10 +11548,10 @@ display_tag_value (int tag, /* ARM EABI attributes section. */ typedef struct { - int tag; + unsigned int tag; const char * name; /* 0 = special, 1 = string, 2 = uleb123, > 0x80 == table lookup. */ - int type; + unsigned int type; const char ** table; } arm_attr_public_tag; @@ -11669,12 +11669,12 @@ static unsigned char * display_arm_attribute (unsigned char * p, const unsigned char * const end) { - int tag; + unsigned int tag; unsigned int len; - int val; + unsigned int val; arm_attr_public_tag * attr; unsigned i; - int type; + unsigned int type; tag = read_uleb128 (p, &len, end); p += len; |