[llvm] r222882 - Stop uppercasing build attribute data.

Charlie Turner charlie.turner at arm.com
Thu Nov 27 04:13:56 PST 2014


Author: chatur01
Date: Thu Nov 27 06:13:56 2014
New Revision: 222882

URL: http://llvm.org/viewvc/llvm-project?rev=222882&view=rev
Log:
Stop uppercasing build attribute data.

The string data for string-valued build attributes were being unconditionally
uppercased. There is no mention in the ARM ABI addenda about case conventions,
so it's technically implementation defined as to whether the data are
capitialised in some way or not. However, there are good reasons not to
captialise the data.

  * It's less work.
  * Some vendors may legitimately have case-sensitive checks for these
    attributes which would fail on LLVM generated object files.
  * There could be locale issues with uppercasing.

The original reasons for uppercasing appear to have stemmed from an
old codesourcery toolchain behaviour, see

http://comments.gmane.org/gmane.comp.compilers.llvm.cvs/87133

This patch makes the object file emitted no longer captialise string
data, it encodes as seen in the assembly source.

Change-Id: Ibe20dd6e60d2773d57ff72a78470839033aa5538

Modified:
    llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
    llvm/trunk/test/CodeGen/ARM/build-attributes-encoding.s
    llvm/trunk/test/MC/ARM/directive-arch-iwmmxt.s
    llvm/trunk/test/MC/ARM/directive-arch-iwmmxt2.s
    llvm/trunk/test/MC/ARM/directive-cpu.s
    llvm/trunk/test/MC/ARM/directive-eabi_attribute-overwrite.s
    llvm/trunk/test/MC/ARM/directive-eabi_attribute.s
    llvm/trunk/test/tools/llvm-readobj/ARM/attributes.s

Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp?rev=222882&r1=222881&r2=222882&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp (original)
+++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp Thu Nov 27 06:13:56 2014
@@ -979,12 +979,12 @@ void ARMTargetELFStreamer::finishAttribu
       Streamer.EmitULEB128IntValue(item.IntValue);
       break;
     case AttributeItem::TextAttribute:
-      Streamer.EmitBytes(item.StringValue.upper());
+      Streamer.EmitBytes(item.StringValue);
       Streamer.EmitIntValue(0, 1); // '\0'
       break;
     case AttributeItem::NumericAndTextAttributes:
       Streamer.EmitULEB128IntValue(item.IntValue);
-      Streamer.EmitBytes(item.StringValue.upper());
+      Streamer.EmitBytes(item.StringValue);
       Streamer.EmitIntValue(0, 1); // '\0'
       break;
     }

Modified: llvm/trunk/test/CodeGen/ARM/build-attributes-encoding.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/build-attributes-encoding.s?rev=222882&r1=222881&r2=222882&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/ARM/build-attributes-encoding.s (original)
+++ llvm/trunk/test/CodeGen/ARM/build-attributes-encoding.s Thu Nov 27 06:13:56 2014
@@ -78,7 +78,7 @@
 // CHECK-NEXT:     EntrySize: 0
 // CHECK-NEXT:     SectionData (
 // CHECK-NEXT:       0000: 41460000 00616561 62690001 3C000000
-// CHECK-NEXT:       0010: 05434F52 5445582D 41380006 0A074108
+// CHECK-NEXT:       0010: 05636F72 7465782D 61380006 0A074108
 // CHECK-NEXT:       0020: 0109020A 030C0214 01150117 01180119
 // CHECK-NEXT:       0030: 011B001C 0124012A 012C0244 036EA001
 // CHECK-NEXT:       0040: 81013100 FA0101

Modified: llvm/trunk/test/MC/ARM/directive-arch-iwmmxt.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/directive-arch-iwmmxt.s?rev=222882&r1=222881&r2=222882&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/directive-arch-iwmmxt.s (original)
+++ llvm/trunk/test/MC/ARM/directive-arch-iwmmxt.s Thu Nov 27 06:13:56 2014
@@ -16,7 +16,7 @@
 @ CHECK-ATTR: FileAttributes {
 @ CHECK-ATTR:   Attribute {
 @ CHECK-ATTR:     TagName: CPU_name
-@ CHECK-ATTR:     Value: IWMMXT
+@ CHECK-ATTR:     Value: iwmmxt
 @ CHECK-ATTR:   }
 @ CHECK-ATTR:   Attribute {
 @ CHECK-ATTR:     TagName: CPU_arch

Modified: llvm/trunk/test/MC/ARM/directive-arch-iwmmxt2.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/directive-arch-iwmmxt2.s?rev=222882&r1=222881&r2=222882&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/directive-arch-iwmmxt2.s (original)
+++ llvm/trunk/test/MC/ARM/directive-arch-iwmmxt2.s Thu Nov 27 06:13:56 2014
@@ -16,7 +16,7 @@
 @ CHECK-ATTR: FileAttributes {
 @ CHECK-ATTR:   Attribute {
 @ CHECK-ATTR:     TagName: CPU_name
-@ CHECK-ATTR:     Value: IWMMXT2
+@ CHECK-ATTR:     Value: iwmmxt2
 @ CHECK-ATTR:   }
 @ CHECK-ATTR:   Attribute {
 @ CHECK-ATTR:     TagName: CPU_arch

Modified: llvm/trunk/test/MC/ARM/directive-cpu.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/directive-cpu.s?rev=222882&r1=222881&r2=222882&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/directive-cpu.s (original)
+++ llvm/trunk/test/MC/ARM/directive-cpu.s Thu Nov 27 06:13:56 2014
@@ -20,7 +20,6 @@
 @ CHECK: 10000000
 
 	.cpu	cortex-a8
-@ CHECK: 05
-@ CHECK: 434F52 5445582D 413800
+@ CHECK: 05636F72 7465782D 613800
 
 @ CHECK: )

Modified: llvm/trunk/test/MC/ARM/directive-eabi_attribute-overwrite.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/directive-eabi_attribute-overwrite.s?rev=222882&r1=222881&r2=222882&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/directive-eabi_attribute-overwrite.s (original)
+++ llvm/trunk/test/MC/ARM/directive-eabi_attribute-overwrite.s Thu Nov 27 06:13:56 2014
@@ -3,13 +3,13 @@
 
 	.syntax unified
 	.thumb
-
+@ FIXME: The next directive is not correct, Tag_compatibility isn't getting parsed correctly.
 	.eabi_attribute Tag_compatibility, 1
 	.eabi_attribute Tag_compatibility, 1, "aeabi"
 
 @ CHECK-ATTR: FileAttributes {
 @ CHECK-ATTR:   Attribute {
-@ CHECK-ATTR:     Value: 1, AEABI
+@ CHECK-ATTR:     Value: 1, aeabi
 @ CHECK-ATTR:     TagName: compatibility
 @ CHECK-ATTR:     Description: AEABI Conformant
 @ CHECK-ATTR:   }

Modified: llvm/trunk/test/MC/ARM/directive-eabi_attribute.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/directive-eabi_attribute.s?rev=222882&r1=222881&r2=222882&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/directive-eabi_attribute.s (original)
+++ llvm/trunk/test/MC/ARM/directive-eabi_attribute.s Thu Nov 27 06:13:56 2014
@@ -9,12 +9,12 @@
 @ CHECK: .eabi_attribute 4, "Cortex-A9"
 @ CHECK-OBJ:        Tag: 4
 @ CHECK-OBJ-NEXT:   TagName: CPU_raw_name
-@ CHECK-OBJ-NEXT:   Value: CORTEX-A9
+@ CHECK-OBJ-NEXT:   Value: Cortex-A9
 	.eabi_attribute Tag_CPU_name, "cortex-a9"
 @ CHECK: .cpu cortex-a9
 @ CHECK-OBJ:        Tag: 5
 @ CHECK-OBJ-NEXT:   TagName: CPU_name
-@ CHECK-OBJ-NEXT:   Value: CORTEX-A9
+@ CHECK-OBJ-NEXT:   Value: cortex-a9
 	.eabi_attribute Tag_CPU_arch, 10
 @ CHECK: .eabi_attribute 6, 10
 @ CHECK-OBJ:        Tag: 6
@@ -170,7 +170,7 @@
 	.eabi_attribute Tag_compatibility, 1, "aeabi"
 @ CHECK: .eabi_attribute 32, 1, "aeabi"
 @ CHECK-OBJ:        Tag: 32
-@ CHECK-OBJ-NEXT:   Value: 1, AEABI
+@ CHECK-OBJ-NEXT:   Value: 1, aeabi
 @ CHECK-OBJ-NEXT:   TagName: compatibility
 @ CHECK-OBJ-NEXT:   Description: AEABI Conformant
 	.eabi_attribute Tag_CPU_unaligned_access, 0
@@ -213,7 +213,7 @@
 @ CHECK: .eabi_attribute 65, "gnu"
 @ CHECK-OBJ:        Tag: 65
 @ CHECK-OBJ-NEXT:   TagName: also_compatible_with
-@ CHECK-OBJ-NEXT:   Value: GNU
+@ CHECK-OBJ-NEXT:   Value: gnu
 	.eabi_attribute Tag_T2EE_use, 0
 @ CHECK: .eabi_attribute 66, 0
 @ CHECK-OBJ:        Tag: 66

Modified: llvm/trunk/test/tools/llvm-readobj/ARM/attributes.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/ARM/attributes.s?rev=222882&r1=222881&r2=222882&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/ARM/attributes.s (original)
+++ llvm/trunk/test/tools/llvm-readobj/ARM/attributes.s Thu Nov 27 06:13:56 2014
@@ -54,12 +54,12 @@
 @ CHECK:       Attribute {
 @ CHECK:         Tag: 4
 @ CHECK:         TagName: CPU_raw_name
-@ CHECK:         Value: CORTEX-A9
+@ CHECK:         Value: Cortex-A9
 @ CHECK:       }
 @ CHECK:       Attribute {
 @ CHECK:         Tag: 5
 @ CHECK:         TagName: CPU_name
-@ CHECK:         Value: CORTEX-A9
+@ CHECK:         Value: cortex-a9
 @ CHECK:       }
 @ CHECK:       Attribute {
 @ CHECK:         Tag: 6
@@ -219,7 +219,7 @@
 @ CHECK:       }
 @ CHECK:       Attribute {
 @ CHECK:         Tag: 32
-@ CHECK:         Value: 1, AEABI
+@ CHECK:         Value: 1, aeabi
 @ CHECK:         TagName: compatibility
 @ CHECK:         Description: AEABI Conformant
 @ CHECK:       }
@@ -262,7 +262,7 @@
 @ CHECK:       Attribute {
 @ CHECK:         Tag: 65
 @ CHECK:         TagName: also_compatible_with
-@ CHECK:         Value: GNU
+@ CHECK:         Value: gnu
 @ CHECK:       }
 @ CHECK:       Attribute {
 @ CHECK:         Tag: 66





More information about the llvm-commits mailing list