summaryrefslogtreecommitdiff
path: root/src/cmd/6g/obj.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/6g/obj.c')
-rw-r--r--src/cmd/6g/obj.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cmd/6g/obj.c b/src/cmd/6g/obj.c
index 20763cf38..38ba1ad58 100644
--- a/src/cmd/6g/obj.c
+++ b/src/cmd/6g/obj.c
@@ -90,6 +90,15 @@ dumpobj(void)
}
sym = 1;
+ // fix up pc
+ pcloc = 0;
+ for(pl=plist; pl!=nil; pl=pl->link) {
+ for(p=pl->firstpc; p!=P; p=p->link) {
+ p->loc = pcloc;
+ pcloc++;
+ }
+ }
+
// put out functions
for(pl=plist; pl!=nil; pl=pl->link) {
@@ -204,8 +213,13 @@ zaddr(Biobuf *b, Addr *a, int s)
t |= T_SYM;
switch(a->type) {
+
+ case D_BRANCH:
+ a->offset = a->branch->loc;
+
default:
t |= T_TYPE;
+
case D_NONE:
if(a->offset != 0) {
t |= T_OFFSET;