[devel] Re: RPM::Database

Dmitry V. Levin ldv на altlinux.org
Ср Окт 19 21:17:25 MSD 2005


On Wed, Oct 19, 2005 at 07:50:32PM +0400, Alexey Tourbin wrote:
> On Wed, Oct 19, 2005 at 06:18:10PM +0400, Alexey Tourbin wrote:
> > On Wed, Oct 19, 2005 at 05:56:35PM +0400, Alexey Tourbin wrote:
> > > > После пересборки perl-RPM работает.
> > > Сломался rpmTagTable.
> > $ cat test.c
> 
> Ну?

Странно всё это:

$ cvs diff -u -r rpm-4_0_4-alt51 lib/rpmlib.h
[...]
--- lib/rpmlib.h	29 Feb 2004 14:14:02 -0000	1.6
+++ lib/rpmlib.h	17 Oct 2005 11:49:21 -0000
[...]
@@ -178,7 +196,7 @@
  */
 /*@-redecl@*/
 /*@observer@*/ /*@unchecked@*/
-extern const struct headerTagTableEntry_s rpmTagTable[];
+extern const struct headerTagTableEntry_s * rpmTagTable;
 /*@=redecl@*/
 
 /**

$ cat rttest.c
#include <stdio.h>
#include <rpmlib.h>
int main()
{
	printf("rpmTagTableSize = %i\nrpmTagTable = %p\nrpmTagTable[0].name = %s (%p)\n",
	       rpmTagTableSize, rpmTagTable,
	       rpmTagTable[0].name, rpmTagTable[0].name);
	return 0;
}

alt51$ gcc -Wall -Werror -I/usr/include/rpm rttest.c -lrpm -orttest-alt51
alt51$ ./rttest-alt51 
rpmTagTableSize = 125
rpmTagTable = 0x8049740
rpmTagTable[0].name = RPMTAG_HEADERIMAGE (0x16b8e4)

alt52$ gcc -Wall -Werror -I/usr/include/rpm rttest.c -lrpm -orttest-alt52
alt52$ ./rttest-alt52 
rpmTagTableSize = 125
rpmTagTable = 0x2b00a0
rpmTagTable[0].name = RPMTAG_HEADERIMAGE (0x2ae760)

alt51$ ./rttest-alt52 
./rttest-alt52: Symbol `rpmTagTable' has different size in shared object, consider re-linking
rpmTagTableSize = 125
rpmTagTable = 0x16b8e4
Segmentation fault

alt52$ ./rttest-alt51 
rpmTagTableSize = 125
rpmTagTable = 0x8049740
rpmTagTable[0].name = `Г* (0x2b00a0)

Тут он прав, полное Г*.

Ну что, придётся откатить этот backport?


-- 
ldv
----------- следущая часть -----------
j e┴ф╜┼┴Ъ╕
l┼	з╤ЙчвоT╝Xm╤÷Ъ√+-╠╘m√)Нф┼ЮЧ≤╘z╧ ┼_щzВ╔Щ╚miхfz{lЪm4Г]5ВЧВВFщw▐з╤ж°├g╖╣╦╖


Подробная информация о списке рассылки Devel