mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-13 11:15:38 +02:00
Support DWARF attribute form DW_FORM_implicit_const
This commit is contained in:
parent
8a8b94bfbb
commit
54d5e1445c
4 changed files with 33 additions and 6 deletions
|
@ -1,6 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<component id="org.eclipse.cdt.core" version="2">
|
||||
<resource path="utils/org/eclipse/cdt/utils/debug/dwarf/DwarfConstants.java" type="org.eclipse.cdt.utils.debug.dwarf.DwarfConstants">
|
||||
<filter id="336658481">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.cdt.utils.debug.dwarf.DwarfConstants"/>
|
||||
<message_argument value="DW_FORM_implicit_const"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="336658481">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.cdt.utils.debug.dwarf.DwarfConstants"/>
|
||||
|
|
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %pluginName
|
||||
Bundle-SymbolicName: org.eclipse.cdt.core; singleton:=true
|
||||
Bundle-Version: 8.2.200.qualifier
|
||||
Bundle-Version: 8.3.0.qualifier
|
||||
Bundle-Activator: org.eclipse.cdt.core.CCorePlugin
|
||||
Bundle-Vendor: %providerName
|
||||
Bundle-Localization: plugin
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
* Salvatore Culcasi - Bug 322475
|
||||
* Serge Beauchamp - Bug 409916
|
||||
* John Dallaway - Support DW_FORM_line_strp (#198)
|
||||
* John Dallaway - Support DW_FORM_implicit_const (#443)
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.cdt.utils.debug.dwarf;
|
||||
|
@ -109,17 +110,21 @@ public class Dwarf implements AutoCloseable {
|
|||
long name;
|
||||
/* unsigned */
|
||||
long form;
|
||||
/* signed (for DW_FORM_implicit_const) */
|
||||
long value;
|
||||
|
||||
Attribute(long n, long f) {
|
||||
Attribute(long n, long f, long v) {
|
||||
name = n;
|
||||
form = f;
|
||||
value = v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("name: ").append(Long.toHexString(name)); //$NON-NLS-1$
|
||||
sb.append(" value: ").append(Long.toHexString(form)); //$NON-NLS-1$
|
||||
sb.append(" form: ").append(Long.toHexString(form)); //$NON-NLS-1$
|
||||
sb.append(" value: ").append(Long.toHexString(value)); //$NON-NLS-1$
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
@ -579,11 +584,17 @@ public class Dwarf implements AutoCloseable {
|
|||
do {
|
||||
name = read_unsigned_leb128(data);
|
||||
form = read_unsigned_leb128(data);
|
||||
long value = 0;
|
||||
if (DwarfConstants.DW_FORM_implicit_const == form) {
|
||||
value = read_signed_leb128(data);
|
||||
}
|
||||
if (name != 0) {
|
||||
entry.attributes.add(new Attribute(name, form));
|
||||
entry.attributes.add(new Attribute(name, form, value));
|
||||
}
|
||||
if (printEnabled)
|
||||
System.out.println("\t\t " + Long.toHexString(name) + " " + Long.toHexString(form)); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
System.out.println("\t\t " + Long.toHexString(name) //$NON-NLS-1$
|
||||
+ " " + Long.toHexString(form) //$NON-NLS-1$
|
||||
+ " " + Long.toHexString(value)); //$NON-NLS-1$
|
||||
} while (name != 0 && form != 0);
|
||||
abbrevs.put(Long.valueOf(code), entry);
|
||||
}
|
||||
|
@ -603,7 +614,12 @@ public class Dwarf implements AutoCloseable {
|
|||
try {
|
||||
for (int i = 0; i < len; i++) {
|
||||
Attribute attr = entry.attributes.get(i);
|
||||
Object obj = readAttribute((int) attr.form, in, header);
|
||||
Object obj;
|
||||
if (DwarfConstants.DW_FORM_implicit_const == attr.form) {
|
||||
obj = Long.valueOf(attr.value);
|
||||
} else {
|
||||
obj = readAttribute((int) attr.form, in, header);
|
||||
}
|
||||
list.add(new AttributeValue(attr, obj));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
* John Dallaway - Add DW_FORM_line_strp (#198)
|
||||
* John Dallaway - Add DW_FORM_implicit_const (#443)
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.cdt.utils.debug.dwarf;
|
||||
|
@ -216,6 +217,10 @@ public class DwarfConstants {
|
|||
* @since 5.7
|
||||
*/
|
||||
public final static int DW_FORM_ref_sig8 = 0x20;
|
||||
/**
|
||||
* @since 8.3
|
||||
*/
|
||||
public final static int DW_FORM_implicit_const = 0x21;
|
||||
/* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
|
||||
/**
|
||||
* @since 5.7
|
||||
|
|
Loading…
Add table
Reference in a new issue