]> granicus.if.org Git - yasm/commitdiff
* coff-objfmt.c (coff_objfmt_section_switch): Fix up handling of GAS flags
authorPeter Johnson <peter@tortall.net>
Sat, 1 Apr 2006 09:09:53 +0000 (09:09 -0000)
committerPeter Johnson <peter@tortall.net>
Sat, 1 Apr 2006 09:09:53 +0000 (09:09 -0000)
a bit; add support for .rodata and .debug sections.
* dwarf2-line.c (yasm_dwarf2__generate_line): Set alignment for .debug_line
explicitly to 1 rather than leaving it implicit.

Fix up testcases to match.

svn path=/trunk/yasm/; revision=1446

modules/dbgfmts/dwarf2/dwarf2-line.c
modules/dbgfmts/dwarf2/tests/pass32/dwarf32_testhd.hex
modules/dbgfmts/dwarf2/tests/pass64/dwarf64_2loc.hex
modules/dbgfmts/dwarf2/tests/pass64/dwarf64_leb128.hex
modules/dbgfmts/dwarf2/tests/passwin64/dwarfwin64_testhd.hex
modules/objfmts/coff/coff-objfmt.c
modules/objfmts/coff/tests/x86id.errwarn
modules/objfmts/coff/tests/x86id.hex

index 29dccf54c8b64c8b77aa9b00781ada2fd986352d..6601d1919f3e15c7b5202a8ded41226adacb3ce8 100644 (file)
@@ -633,9 +633,8 @@ yasm_dwarf2__generate_line(yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2, int asm_source,
     info.asm_source = asm_source;
     info.dbgfmt_dwarf2 = dbgfmt_dwarf2;
     info.debug_line = yasm_object_get_general(dbgfmt_dwarf2->object,
-                                             ".debug_line", 0, 4, 0, 0, &new,
+                                             ".debug_line", 0, 1, 0, 0, &new,
                                              0);
-    yasm_section_set_align(info.debug_line, 0, 0);
     last = yasm_section_bcs_last(info.debug_line);
 
     /* header */
index edaf1bcbd747277b96c8b173535d0e3efb8af6b6..765a9198405e73a04065e173e084c8ee3fa986cf 100644 (file)
@@ -5526,7 +5526,7 @@ a4
 00 
 00 
 00 
-00 
+01 
 00 
 00 
 00 
index 6a6e3f4c9560e7df55bcbac15a377a17e7997740..d41612cdb643d58d5bc4fad722f36e2d2c8f7376 100644 (file)
@@ -798,7 +798,7 @@ ec
 00 
 00 
 00 
-00 
+01 
 00 
 00 
 00 
index 5733368b70f56b8728f6eb3500b781d0581c64be..3ac0b6c90f4f37c6ed23d9c88db87eb82ce40ce5 100644 (file)
@@ -89950,7 +89950,7 @@ d0
 00 
 00 
 00 
-00 
+01 
 00 
 00 
 00 
index b74107a250701ac67ea1e9a1082b853f6e0fe40c..41ed7bcb88e87a0920c627582ed59e88ead17e42 100644 (file)
@@ -94,10 +94,10 @@ c0
 00 
 00 
 00 
-20 
-00 
+40 
 00 
-60 
+10 
+42 
 2f 
 31 
 38 
@@ -134,10 +134,10 @@ f3
 00 
 00 
 00 
-20 
-00 
+40 
 00 
-60 
+10 
+42 
 2f 
 33 
 30 
@@ -174,10 +174,10 @@ f3
 00 
 00 
 00 
-20 
-00 
+40 
 00 
-60 
+10 
+42 
 2f 
 34 
 32 
@@ -214,10 +214,10 @@ d6
 00 
 00 
 00 
-20 
-00 
+40 
 00 
-60 
+40 
+40 
 2f 
 35 
 37 
@@ -254,10 +254,10 @@ ce
 00 
 00 
 00 
-2
+4
 00 
 40 
-60 
+42 
 2f 
 37 
 30 
@@ -334,10 +334,10 @@ b2
 00 
 00 
 00 
-20 
-00 
+40 
 00 
-60 
+10 
+42 
 2f 
 39 
 31 
@@ -374,10 +374,10 @@ bf
 00 
 00 
 00 
-20 
-00 
+40 
 00 
-60 
+10 
+42 
 2f 
 31 
 30 
@@ -414,10 +414,10 @@ da
 00 
 00 
 00 
-20 
-00 
+40 
 00 
-60 
+10 
+42 
 2f 
 31 
 32 
@@ -454,10 +454,10 @@ aa
 00 
 00 
 00 
-20 
-00 
+40 
 00 
-60 
+10 
+42 
 2e 
 63 
 6f 
@@ -2966,12 +2966,12 @@ ff
 08 
 90 
 01 
-66 
-66 
-9
-66 
-66 
-9
+00 
+00 
+0
+00 
+00 
+0
 2c 
 00 
 00 
@@ -3014,12 +3014,12 @@ ff
 20 
 8c 
 02 
-66 
-66 
-9
-66 
-66 
-9
+00 
+00 
+0
+00 
+00 
+0
 1c 
 00 
 00 
@@ -3058,12 +3058,12 @@ ff
 08 
 90 
 01 
-66 
-66 
-9
-66 
-66 
-9
+00 
+00 
+0
+00 
+00 
+0
 2c 
 00 
 00 
@@ -3106,12 +3106,12 @@ ff
 20 
 8c 
 02 
-66 
-66 
-9
-66 
-66 
-9
+00 
+00 
+0
+00 
+00 
+0
 20 
 00 
 00 
index 609ea40dea842b26b1080235f219c7859eacea88..c80309c99c187b62bec53d32b0cab084997022ce 100644 (file)
@@ -1336,7 +1336,8 @@ coff_objfmt_section_switch(yasm_objfmt *objfmt, yasm_valparamhead *valparams,
            align = 16;
        }
        iscode = 1;
-    } else if (strcmp(sectname, ".rdata") == 0) {
+    } else if (strcmp(sectname, ".rdata") == 0
+              || strncmp(sectname, ".rodata", 7) == 0) {
        flags = COFF_STYP_DATA;
        if (objfmt_coff->win32) {
            flags |= COFF_STYP_READ;
@@ -1359,6 +1360,11 @@ coff_objfmt_section_switch(yasm_objfmt *objfmt, yasm_valparamhead *valparams,
        flags = COFF_STYP_INFO;
        if (objfmt_coff->win32)
            flags |= COFF_STYP_DISCARD | COFF_STYP_READ;
+    } else if (yasm__strncasecmp(sectname, ".debug", 6)==0) {
+       flags = COFF_STYP_DATA;
+       if (objfmt_coff->win32)
+           flags |= COFF_STYP_DISCARD|COFF_STYP_READ;
+       align = 1;
     } else {
        /* Default to code */
        flags = COFF_STYP_TEXT;
@@ -1424,6 +1430,7 @@ coff_objfmt_section_switch(yasm_objfmt *objfmt, yasm_valparamhead *valparams,
            /* GAS-style flags */
            int alloc = 0, load = 0, readonly = 0, code = 0, data = 0;
            int shared = 0;
+           iscode = 0;
            for (i=4; i<strlen(vp->val); i++) {
                switch (vp->val[i]) {
                    case 'a':
@@ -1464,6 +1471,7 @@ coff_objfmt_section_switch(yasm_objfmt *objfmt, yasm_valparamhead *valparams,
                flags = COFF_STYP_TEXT;
                if (objfmt_coff->win32)
                    flags |= COFF_STYP_EXECUTE | COFF_STYP_READ;
+               iscode = 1;
            } else if (data) {
                flags = COFF_STYP_DATA;
                if (objfmt_coff->win32)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b83cc295c87d434a5354a45370cf463437eccae7 100644 (file)
@@ -0,0 +1,44 @@
+-:37: warning: Standard COFF does not support read-only data sections
+-:6284: warning: Standard COFF does not support read-only data sections
+-:6527: warning: Standard COFF does not support read-only data sections
+-:6540: warning: Standard COFF does not support read-only data sections
+-:6549: warning: Standard COFF does not support read-only data sections
+-:6559: warning: Standard COFF does not support read-only data sections
+-:6562: warning: Standard COFF does not support read-only data sections
+-:6629: warning: Standard COFF does not support read-only data sections
+-:7499: warning: Standard COFF does not support read-only data sections
+-:7518: warning: Standard COFF does not support read-only data sections
+-:7991: warning: Standard COFF does not support read-only data sections
+-:9105: warning: Standard COFF does not support read-only data sections
+-:9121: warning: Standard COFF does not support read-only data sections
+-:9143: warning: Standard COFF does not support read-only data sections
+-:9298: warning: Standard COFF does not support read-only data sections
+-:9368: warning: Standard COFF does not support read-only data sections
+-:9511: warning: Standard COFF does not support read-only data sections
+-:9596: warning: Standard COFF does not support read-only data sections
+-:9661: warning: Standard COFF does not support read-only data sections
+-:9741: warning: Standard COFF does not support read-only data sections
+-:9810: warning: Standard COFF does not support read-only data sections
+-:9879: warning: Standard COFF does not support read-only data sections
+-:9945: warning: Standard COFF does not support read-only data sections
+-:10005: warning: Standard COFF does not support read-only data sections
+-:10069: warning: Standard COFF does not support read-only data sections
+-:10139: warning: Standard COFF does not support read-only data sections
+-:10208: warning: Standard COFF does not support read-only data sections
+-:10270: warning: Standard COFF does not support read-only data sections
+-:10935: warning: Standard COFF does not support read-only data sections
+-:11679: warning: Standard COFF does not support read-only data sections
+-:11848: warning: Standard COFF does not support read-only data sections
+-:12534: warning: Standard COFF does not support read-only data sections
+-:14533: warning: Standard COFF does not support read-only data sections
+-:15942: warning: Standard COFF does not support read-only data sections
+-:18092: warning: Standard COFF does not support read-only data sections
+-:18170: warning: Standard COFF does not support read-only data sections
+-:18580: warning: Standard COFF does not support read-only data sections
+-:19769: warning: Standard COFF does not support read-only data sections
+-:19878: warning: Standard COFF does not support read-only data sections
+-:21893: warning: Standard COFF does not support read-only data sections
+-:24311: warning: Standard COFF does not support read-only data sections
+-:24465: warning: Standard COFF does not support read-only data sections
+-:25481: warning: Standard COFF does not support read-only data sections
+-:25614: warning: Standard COFF does not support read-only data sections
index 7339666aa4840945043d9eebddc1a52c1e74c037..ccadb7684f448571e159893f78722665c49a0318 100644 (file)
@@ -134,7 +134,7 @@ da
 07 
 00 
 00 
-2
+4
 00 
 60 
 00