All of lore.kernel.org
 help / color / mirror / Atom feed
From: Filip Navara <navaraf@reactos.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] qemu/target-i386 op.c ops_sse.h
Date: Wed, 27 Apr 2005 15:25:45 +0200	[thread overview]
Message-ID: <426F92D9.8010600@reactos.com> (raw)
In-Reply-To: <E1DQWoz-0005iv-00@savannah.gnu.org>

[-- Attachment #1: Type: text/plain, Size: 577 bytes --]

Fabrice Bellard wrote:

>CVSROOT:	/cvsroot/qemu
>Module name:	qemu
>Branch: 	
>Changes by:	Fabrice Bellard <bellard@savannah.gnu.org>	05/04/26 20:38:17
>
>Modified files:
>	target-i386    : op.c ops_sse.h 
>
>Log message:
>	removed switches in op.c (Paul Brook)
>
>CVSWeb URLs:
>http://savannah.gnu.org/cgi-bin/viewcvs/qemu/qemu/target-i386/op.c.diff?tr1=1.36&tr2=1.37&r1=text&r2=text
>http://savannah.gnu.org/cgi-bin/viewcvs/qemu/qemu/target-i386/ops_sse.h.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
>  
>
This breaks compilation on Windows... the attached patch fixes it.

- Filip

[-- Attachment #2: dyngen.c.diff --]
[-- Type: text/x-patch, Size: 3534 bytes --]

Index: dyngen.c
===================================================================
RCS file: /cvsroot/qemu/qemu/dyngen.c,v
retrieving revision 1.39
diff -u -p -r1.39 dyngen.c
--- dyngen.c	7 Apr 2005 22:20:28 -0000	1.39
+++ dyngen.c	27 Apr 2005 13:21:51 -0000
@@ -604,26 +604,6 @@ void sym_ent_name(struct external_syment
     }
 }
 
-char *name_for_dotdata(struct coff_rel *rel)
-{
-	int i;
-	struct coff_sym *sym;
-	uint32_t text_data;
-
-	text_data = *(uint32_t *)(text + rel->r_offset);
-
-	for (i = 0, sym = symtab; i < nb_syms; i++, sym++) {
-		if (sym->st_syment->e_scnum == data_shndx &&
-                    text_data >= sym->st_value &&
-                    text_data < sym->st_value + sym->st_size) {
-                    
-                    return sym->st_name;
-
-		}
-	}
-	return NULL;
-}
-
 static char *get_sym_name(EXE_SYM *sym)
 {
     return sym->st_name;
@@ -633,8 +613,8 @@ static char *get_rel_sym_name(EXE_RELOC 
 {
     char *name;
     name = get_sym_name(symtab + *(uint32_t *)(rel->r_reloc->r_symndx));
-    if (!strcmp(name, ".data"))
-        name = name_for_dotdata(rel);
+    if (name[0] == '.')
+        return NULL;
     return name;
 }
 
@@ -782,20 +762,25 @@ int load_object(const char *filename)
 	}
 
 		
-    /* find text relocations, if any */
-    sec = &shdr[coff_text_shndx];
-    coff_relocs = load_data(fd, sec->s_relptr, sec->s_nreloc*RELSZ);
-    nb_relocs = sec->s_nreloc;
+    /* find relocations, if any */
+    for (j = 0, nb_relocs = 0; j < fhdr.f_nscns; j++) {
+        nb_relocs += shdr[j].s_nreloc;
+    }
+    relocs = malloc(sizeof(struct coff_rel) * nb_relocs);
 
     /* set coff relocation */
-    relocs = malloc(sizeof(struct coff_rel) * nb_relocs);
-    for (i = 0, ext_rel = coff_relocs, rel = relocs; i < nb_relocs; 
-         i++, ext_rel++, rel++) {
-        memset(rel, 0, sizeof(*rel));
-        rel->r_reloc = ext_rel;
-        rel->r_offset = *(uint32_t *)ext_rel->r_vaddr;
-        rel->r_type = *(uint16_t *)ext_rel->r_type;
+    for (j = 0, rel = relocs; j < fhdr.f_nscns; j++) {
+        sec = &shdr[j];
+        coff_relocs = load_data(fd, sec->s_relptr, sec->s_nreloc*RELSZ);
+        for (i = 0, ext_rel = coff_relocs; i < sec->s_nreloc; 
+             i++, ext_rel++, rel++) {
+            memset(rel, 0, sizeof(*rel));
+            rel->r_reloc = ext_rel;
+            rel->r_offset = *(uint32_t *)ext_rel->r_vaddr;
+            rel->r_type = *(uint16_t *)ext_rel->r_type;
+        }
     }
+
     return 0;
 }
 
@@ -1303,6 +1288,8 @@ int arm_emit_ldr_info(const char *name, 
                     for(i = 0, rel = relocs;i < nb_relocs; i++, rel++) {
                         if (rel->r_offset == (pc_offset + start_offset)) {
                             sym_name = get_rel_sym_name(rel);
+                            if (!sym_name)
+                                continue;
                             /* the compiler leave some unnecessary references to the code */
                             get_reloc_expr(relname, sizeof(relname), sym_name);
                             type = ELF32_R_TYPE(rel->r_info);
@@ -1698,6 +1685,8 @@ void gen_code(const char *name, host_ulo
                 if (rel->r_offset >= start_offset &&
 		    rel->r_offset < start_offset + copy_size) {
                     sym_name = get_rel_sym_name(rel);
+                    if (!sym_name)
+                        continue;
                     if (strstart(sym_name, "__op_jmp", &p)) {
                         int n;
                         n = strtol(p, NULL, 10);

  reply	other threads:[~2005-04-27 13:31 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-26 20:38 [Qemu-devel] qemu/target-i386 op.c ops_sse.h Fabrice Bellard
2005-04-27 13:25 ` Filip Navara [this message]
2005-04-27 13:50   ` Filip Navara

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=426F92D9.8010600@reactos.com \
    --to=navaraf@reactos.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.