aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorTerry Guo <terry.guo@arm.com>2014-09-16 13:08:22 +0100
committerNick Clifton <nickc@redhat.com>2014-09-16 13:08:22 +0100
commit70e99720f9d558263756a482ae750b263ffd92ba (patch)
tree893354caf187ada3cfa61d98392b320a99d324ea /binutils
parent428b16bd5a3947e3a608f0c6751a8be7dbd88959 (diff)
downloadgdb-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/ChangeLog5
-rw-r--r--binutils/readelf.c10
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;