Entra

View Full Version : "warning" compilando simcpu per linux


asghan
04-11-2012, 23:22
Salve

avrei la neccessita di compilare simcpu (http://web.diegm.uniud.it/pierluca/public_html/teaching/fpac/strumenti/simcpu/simcpu.zip) per linux

ma mi restituisce diversi messaggi di warning

gcc -o include include.c
$ gcc -o assembler assembler.c
In file included from assembler.c:25:0:
simcpu.h:60:13: warning: 'packed' attribute ignored for field of type 'byte' [-Wattributes]
simcpu.h:72:19: warning: 'packed' attribute ignored for field of type 'struct TAG_registers' [-Wattributes]
simcpu.h:73:19: warning: 'packed' attribute ignored for field of type 'byte' [-Wattributes]
simcpu.h:74:16: warning: 'packed' attribute ignored for field of type 'union TAG_operands' [-Wattributes]
simcpu.h:75:13: warning: 'packed' attribute ignored for field of type 'struct TAG_instruction_fields' [-Wattributes]
$ gcc -o simcpu executor.c user_interface.c
In file included from executor.c:23:0:
simcpu.h:60:13: warning: 'packed' attribute ignored for field of type 'byte' [-Wattributes]
simcpu.h:72:19: warning: 'packed' attribute ignored for field of type 'struct TAG_registers' [-Wattributes]
simcpu.h:73:19: warning: 'packed' attribute ignored for field of type 'byte' [-Wattributes]
simcpu.h:74:16: warning: 'packed' attribute ignored for field of type 'union TAG_operands' [-Wattributes]
simcpu.h:75:13: warning: 'packed' attribute ignored for field of type 'struct TAG_instruction_fields' [-Wattributes]

e dopo averlo provato non mi sembra che funzioni...
non conoscendo il c ho difficolta a risolvere il problema :help:

grazie per gli eventuali consigli :)

Gimli[2BV!2B]
05-11-2012, 00:42
Quei warning riguardanti l'attributo packed non dovrebbero dare alcun problema.

L'attributo packed dovrebbe riguardare solo la minimizzazione della memoria occupata:packedThis attribute, attached to struct or union type definition, specifies that each member (other than zero-width bitfields) of the structure or union is placed to minimize the memory required. When attached to an enum definition, it indicates that the smallest integral type should be used. (http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html)

In tutti i casi correggerei con questa patch il codice che il compilatore non sembra apprezzare del tutto:--- simcpu.h.original 2005-05-18 15:39:34.000000000 +0200
+++ simcpu.h 2012-11-05 01:27:41.379956560 +0100
@@ -57,22 +57,22 @@ typedef unsigned char byte;
typedef unsigned char flag;
typedef struct TAG_instruction
{
- byte opcode __attribute__ ((packed));
- struct TAG_instruction_fields
+ byte opcode;
+ struct __attribute__ ((packed)) TAG_instruction_fields
{
unsigned group : 2 __attribute__ ((packed));
unsigned addressing_mode : 2 __attribute__ ((packed));
unsigned instruction_code : 4 __attribute__ ((packed));
- union TAG_operands
+ union __attribute__ ((packed)) TAG_operands
{
- struct TAG_registers
+ struct __attribute__ ((packed)) TAG_registers
{
unsigned first_register : 4 __attribute__ ((packed));
unsigned second_register : 4 __attribute__ ((packed));
- } registers __attribute__ ((packed));
- byte offset __attribute__ ((packed));
- } operands __attribute__ ((packed));
- } instruction_fields __attribute__ ((packed));
+ } registers;
+ byte offset;
+ } operands;
+ } instruction_fields;
} instruction;Salvata in un file simcpu.h.patch questo è il comando per applicarla:patch -d /home/gimli/Scaricati/simcpu/source -p0 < simcpu.h.patch
gimli@sertan ~/Scaricati/simcpu/source $ gcc -o simcpu executor.c user_interface.c
gimli@sertan ~/Scaricati/simcpu/source $ gcc -o assembler assembler.c
gimli@sertan ~/Scaricati/simcpu/source $

asghan
06-11-2012, 19:38
ciao
penso di aver sbagliato qualcosa...

ho copiato il file in /tmp/simcpu/source/simcpu.h.patch

/tmp/simcpu/source$ ls
assembler.c include.c make_include.bat readme.txt simcpu.h.patch
executor.c make_assembler.bat make_simcpu.bat simcpu.h user_interface.c


/tmp/simcpu/source$ patch -d /tmp/simcpu/source -p0 < simcpu.h.patch
patching file simcpu.h
Hunk #1 FAILED at 57.
1 out of 1 hunk FAILED -- saving rejects to file simcpu.h.rej

/tmp/simcpu/source$ ls
assembler.c include.c make_include.bat readme.txt simcpu.h.orig simcpu.h.rej
executor.c make_assembler.bat make_simcpu.bat simcpu.h simcpu.h.patch user_interface.c

Gimli[2BV!2B]
06-11-2012, 21:22
Bah, end of line Windows che si mangiano copiando dal forum.gimli@sertan ~ $ patch -d /home/gimli/Scaricati/simcpu/source -p0 < Scaricati/simcpu/source/simcpu.h.patch_2
patching file simcpu.h
Hunk #1 FAILED at 57 (different line endings).
1 out of 1 hunk FAILED -- saving rejects to file simcpu.h.rejAllego il file.