{"thread":{"id":"4699","subject":"[PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","startedAt":"2006-06-28T18:35:57Z","lastAt":"2006-06-30T00:29:12Z","messageCount":13,"participants":["Marco Roeland","Junio C Hamano","Pavel Roskin","Sergey Vlasov","Josef Weidendorfer","Jakub Narebski"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"22749","messageId":"20060628183557.GA5713@fiberbit.xs4all.nl","threadId":"4699","inReplyTo":null,"subject":"[PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Marco Roeland","fromEmail":"marco.roeland@xs4all.nl","sentAt":"2006-06-28T18:35:57Z","receivedAt":"2006-06-28T18:35:57Z","isPatch":true,"sender":{"key":"marco.roeland@xs4all.nl","avatar":null},"body":"In commit 6294a10 it was noted that \"on x86-64 it seems that Git.xs does\nnot link without compiling the main git objects with -fPIC\". Set it\ntherefore automatically on this platform.\n\nSigned-off-by: Marco Roeland <marco.roeland@xs4all.nl>\n---\nAt the moment this is 'pu' stuff.\n---\n Makefile |    3 +++\n 1 files changed, 3 insertions(+), 0 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 2df5bd4..0f0e25a 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -254,6 +254,9 @@ # we had \"elif\" things would have been m\n \n ifeq ($(uname_S),Linux)\n \tNO_STRLCPY = YesPlease\n+\tifneq (,$(findstring x86_64,$(uname_M)))\n+\t\tUSE_PIC = YesPlease\n+\tendif\n endif\n ifeq ($(uname_S),Darwin)\n \tNEEDS_SSL_WITH_CRYPTO = YesPlease\n-- \n1.4.1.rc1.g3550-dirty\n"},{"id":"22750","messageId":"7vr719159v.fsf@assigned-by-dhcp.cox.net","threadId":"4699","inReplyTo":"20060628183557.GA5713@fiberbit.xs4all.nl","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-06-28T18:53:00Z","receivedAt":"2006-06-28T18:53:00Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Marco Roeland <marco.roeland@xs4all.nl> writes:\n\n> In commit 6294a10 it was noted that \"on x86-64 it seems that Git.xs does\n> not link without compiling the main git objects with -fPIC\". Set it\n> therefore automatically on this platform.\n\nI agree with it in principle but was too lazy to do that myself.\nI wonder it should be inside Linux, though.\n\n>  ifeq ($(uname_S),Linux)\n>  \tNO_STRLCPY = YesPlease\n> +\tifneq (,$(findstring x86_64,$(uname_M)))\n> +\t\tUSE_PIC = YesPlease\n> +\tendif\n>  endif\n"},{"id":"22751","messageId":"7virml14za.fsf@assigned-by-dhcp.cox.net","threadId":"4699","inReplyTo":"7vr719159v.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-06-28T18:59:21Z","receivedAt":"2006-06-28T18:59:21Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <junkio@cox.net> writes:\n\n> Marco Roeland <marco.roeland@xs4all.nl> writes:\n>\n>> In commit 6294a10 it was noted that \"on x86-64 it seems that Git.xs does\n>> not link without compiling the main git objects with -fPIC\". Set it\n>> therefore automatically on this platform.\n>\n> I agree with it in principle but was too lazy to do that myself.\n> I wonder it should be inside Linux, though.\n>\n>>  ifeq ($(uname_S),Linux)\n>>  \tNO_STRLCPY = YesPlease\n>> +\tifneq (,$(findstring x86_64,$(uname_M)))\n>> +\t\tUSE_PIC = YesPlease\n>> +\tendif\n>>  endif\n\nIn other words, I am wondering why you did not do this more\nobvious one:\n\n        ifeq ($(uname_M),x86_64)\n                USE_PIC = YesPlease\n        endif\n\nMy suspicion is that you protected that in Linux on purpose\nbecause you know that my version would break for somebody else,\nor because you are trying to be cautious not to break other\nplatforms you do not have access to, and I cannot tell which.\n"},{"id":"22752","messageId":"20060628190814.GC5713@fiberbit.xs4all.nl","threadId":"4699","inReplyTo":"7vr719159v.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Marco Roeland","fromEmail":"marco.roeland@xs4all.nl","sentAt":"2006-06-28T19:08:14Z","receivedAt":"2006-06-28T19:08:14Z","isPatch":true,"sender":{"key":"marco.roeland@xs4all.nl","avatar":null},"body":"On Wednesday June 28th 2006 Junio C Hamano wrote:\n\n> I agree with it in principle but was too lazy to do that myself.\n> I wonder it should be inside Linux, though.\n> \n> >  ifeq ($(uname_S),Linux)\n> >  \tNO_STRLCPY = YesPlease\n> > +\tifneq (,$(findstring x86_64,$(uname_M)))\n> > +\t\tUSE_PIC = YesPlease\n> > +\tendif\n> >  endif\n\nYes, I wondered about that myself. I chose to be on the safe side: I\ncan and have tested this myself on Linux x86-64 but am not sure if it's\nneeded on the BSD's for example.\n\nEven for Linux someone mentioned that probably i386 is the exception in\n_not_ needing the -fPIC linkage. It might even be specific to the Perl\n\"xs\" implementation specifics?\n\nSo I should have added \"Works for me (TM)\"! ;-)\n-- \nMarco Roeland\n"},{"id":"22753","messageId":"20060628192145.GD5713@fiberbit.xs4all.nl","threadId":"4699","inReplyTo":"7virml14za.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Marco Roeland","fromEmail":"marco.roeland@xs4all.nl","sentAt":"2006-06-28T19:21:45Z","receivedAt":"2006-06-28T19:21:45Z","isPatch":true,"sender":{"key":"marco.roeland@xs4all.nl","avatar":null},"body":"On Wednesday June 28th 2006 Junio C Hamano wrote:\n\n> >>  ifeq ($(uname_S),Linux)\n> >>  \tNO_STRLCPY = YesPlease\n> >> +\tifneq (,$(findstring x86_64,$(uname_M)))\n> >> +\t\tUSE_PIC = YesPlease\n> >> +\tendif\n> >>  endif\n> \n> In other words, I am wondering why you did not do this more\n> obvious one:\n> \n>         ifeq ($(uname_M),x86_64)\n>                 USE_PIC = YesPlease\n>         endif\n> \n> My suspicion is that you protected that in Linux on purpose\n> because you know that my version would break for somebody else,\n> or because you are trying to be cautious not to break other\n> platforms you do not have access to, and I cannot tell which.\n\nSorry for the confusion. Yes that construct is much more readable. I\ncopy and pasted it from another section in the Makefile and adapted it\nto this use. I tested it and it worked so I decided no to change it\nanymore. So that clears up the syntactical issue.\n\nI certainly do not know cases outside Linux where this might break on\nx86-64. I just tried to limit it to the case I could test. But perhaps\nsomeone with an x86-64 BSD or Solaris might try it?\n\nTo paraphrase Dave Jones: I type 'make', it fails. Some 'git log' later\nI realise I have to manually define 'USE_PIC'. Hey, why doesn't it work\nautomagically? Some 'git grep' and I spot a construct for specific\n(sub)platforms. Monkey see, monkey do. I type 'make', it works and\nmonkey sends patch! Thats it! No subtleties involved;-)\n-- \nMarco Roeland\n"},{"id":"22754","messageId":"20060628195518.GE5713@fiberbit.xs4all.nl","threadId":"4699","inReplyTo":"20060628192145.GD5713@fiberbit.xs4all.nl","subject":"[PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.xs","fromName":"Marco Roeland","fromEmail":"marco.roeland@xs4all.nl","sentAt":"2006-06-28T19:55:18Z","receivedAt":"2006-06-28T19:55:18Z","isPatch":true,"sender":{"key":"marco.roeland@xs4all.nl","avatar":null},"body":"In commit 6294a10 it was noted that \"on x86-64 it seems that Git.xs does\nnot link without compiling the main git objects with -fPIC\". Set it\ntherefore automatically on this platform.\n\nThis patch does this only for _Linux_ x86-64, as that is the only x86-64\nplatform I have access to. But it might very well make sense on other\nx86-64 platforms, please test and report if you have such a platform.\n\nSigned-off-by: Marco Roeland <marco.roeland@xs4all.nl>\n---\nThis applies to 'pu'. It is an amended version from an earlier one\nwith a simplification from Junio and a clarification why it is Linux\nspecific at the moment. The title was also slightly improved.\n---\n Makefile |    3 +++\n 1 files changed, 3 insertions(+), 0 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 2df5bd4..88cfe2b 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -254,6 +254,9 @@ # we had \"elif\" things would have been m\n \n ifeq ($(uname_S),Linux)\n \tNO_STRLCPY = YesPlease\n+\tifeq ($(uname_M),x86_64)\n+\t\tUSE_PIC = YesPlease\n+\tendif\n endif\n ifeq ($(uname_S),Darwin)\n \tNEEDS_SSL_WITH_CRYPTO = YesPlease\n-- \n1.4.1.rc1.g3550-dirty\n"},{"id":"22756","messageId":"1151527945.1619.17.camel@dv","threadId":"4699","inReplyTo":"20060628192145.GD5713@fiberbit.xs4all.nl","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Pavel Roskin","fromEmail":"proski@gnu.org","sentAt":"2006-06-28T20:52:25Z","receivedAt":"2006-06-28T20:52:25Z","isPatch":true,"sender":{"key":"proski@gnu.org","avatar":null},"body":"On Wed, 2006-06-28 at 21:21 +0200, Marco Roeland wrote:\n> I certainly do not know cases outside Linux where this might break on\n> x86-64. I just tried to limit it to the case I could test. But perhaps\n> someone with an x86-64 BSD or Solaris might try it?\n> \n> To paraphrase Dave Jones: I type 'make', it fails. Some 'git log' later\n> I realise I have to manually define 'USE_PIC'. Hey, why doesn't it work\n> automagically?\n\nAutomagically?  You should search the archives for \"Autoconf\".  When I\nproposed using it, the hell broke loose.  Now let me indulge in\nSchadenfreude :-)\n\nI guess I'll need to argue with a working patch next time.\n\n-- \nRegards,\nPavel Roskin\n"},{"id":"22758","messageId":"7vbqsdynvu.fsf@assigned-by-dhcp.cox.net","threadId":"4699","inReplyTo":"20060628190814.GC5713@fiberbit.xs4all.nl","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-06-28T21:24:37Z","receivedAt":"2006-06-28T21:24:37Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Marco Roeland <marco.roeland@xs4all.nl> writes:\n\n> Even for Linux someone mentioned that probably i386 is the exception in\n> _not_ needing the -fPIC linkage. It might even be specific to the Perl\n> \"xs\" implementation specifics?\n\nUSE_PIC is for pleasing Perly git and nothing else right now.\n\n> So I should have added \"Works for me (TM)\"! ;-)\n\nThat would have been more explicit way to tell me that this is a\npartial solution and I should solicit help from people on other\nplatforms.\n\nBy the way, I had an impression that compiling things with -fPIC\nwhen not necessary was generally a bad idea from performance\npoint of view.  If that is the case we might want to compile,\nunder USE_PIC, everything with -fPIC in a separate area to\ncompile and link with Git.xs, without affecting the C-only core\ncode.\n\nI suspect this would largely depend on the architecture.  I ran\ngit-fsck-objects compiled with and without -fPIC (after \"make\nclean\" to rebuild everything) on a fully packed copy of the\nlinux-2.6 repository on my x86_64 box, and did not see\nmeaningful differences:\n\n: gitster; /usr/bin/time ../git.junio/git-fsck-objects-no-pic --full\n109.71user 5.01system 1:54.89elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (14major+1834967minor)pagefaults 0swaps\n: gitster; /usr/bin/time ../git.junio/git-fsck-objects-with-pic --full\n109.05user 4.97system 1:54.08elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k\n0inputs+0outputs (0major+1834981minor)pagefaults 0swaps\n: gitster;\n"},{"id":"22783","messageId":"20060629130400.c280de67.vsu@altlinux.ru","threadId":"4699","inReplyTo":"7vbqsdynvu.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Sergey Vlasov","fromEmail":"vsu@altlinux.ru","sentAt":"2006-06-29T09:04:00Z","receivedAt":"2006-06-29T09:04:00Z","isPatch":true,"sender":{"key":"vsu@altlinux.ru","avatar":"https://avatars.githubusercontent.com/u/616082?v=4"},"body":"On Wed, 28 Jun 2006 14:24:37 -0700 Junio C Hamano wrote:\n\n> Marco Roeland <marco.roeland@xs4all.nl> writes:\n> \n> > Even for Linux someone mentioned that probably i386 is the exception in\n> > _not_ needing the -fPIC linkage. It might even be specific to the Perl\n> > \"xs\" implementation specifics?\n\nIn general, -fPIC is required when building shared libraries.  On some\nsystems (e.g., Linux/i386) you can get away without -fPIC, but with a\npenalty on memory use and load time: non-PIC code will need relocations,\ntherefore its pages will no longer be shared between different\nprocesses, and relocations will be performed immediately after loading\nthe shared library.\n\n> USE_PIC is for pleasing Perly git and nothing else right now.\n> \n> > So I should have added \"Works for me (TM)\"! ;-)\n> \n> That would have been more explicit way to tell me that this is a\n> partial solution and I should solicit help from people on other\n> platforms.\n> \n> By the way, I had an impression that compiling things with -fPIC\n> when not necessary was generally a bad idea from performance\n> point of view.  If that is the case we might want to compile,\n> under USE_PIC, everything with -fPIC in a separate area to\n> compile and link with Git.xs, without affecting the C-only core\n> code.\n\nThis is exactly what libtool does (if both static and shared libraries\nare compiled, each file is compiled twice - once with -fPIC -DPIC, and\nonce without these options).\n\nBut I suspect that even libtool won't help with Perl anyway, unless we\ncreate a proper libgit.so and then link our Perl extension with it.\n\n> I suspect this would largely depend on the architecture.  I ran\n> git-fsck-objects compiled with and without -fPIC (after \"make\n> clean\" to rebuild everything) on a fully packed copy of the\n> linux-2.6 repository on my x86_64 box, and did not see\n> meaningful differences:\n> \n> : gitster; /usr/bin/time ../git.junio/git-fsck-objects-no-pic --full\n> 109.71user 5.01system 1:54.89elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k\n> 0inputs+0outputs (14major+1834967minor)pagefaults 0swaps\n> : gitster; /usr/bin/time ../git.junio/git-fsck-objects-with-pic --full\n> 109.05user 4.97system 1:54.08elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k\n> 0inputs+0outputs (0major+1834981minor)pagefaults 0swaps\n> : gitster;\n\nThis is because most of time is spent inside SHA-1 and zlib routines,\nwhich are the same in these cases.  Using mozilla-sha1 code might show\nsome difference.\n\nAnd the effect of -fPIC on x86_64 is smaller than on i386, because\nx86_64 has 2x more registers than i386, therefore loss of one register\nis less noticeable.\n"},{"id":"22787","messageId":"200606291158.27172.Josef.Weidendorfer@gmx.de","threadId":"4699","inReplyTo":"20060629130400.c280de67.vsu@altlinux.ru","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Josef Weidendorfer","fromEmail":"josef.weidendorfer@gmx.de","sentAt":"2006-06-29T09:58:26Z","receivedAt":"2006-06-29T09:58:26Z","isPatch":true,"sender":{"key":"josef.weidendorfer@gmx.de","avatar":null},"body":"On Thursday 29 June 2006 11:04, Sergey Vlasov wrote:\n> And the effect of -fPIC on x86_64 is smaller than on i386, because\n> x86_64 has 2x more registers than i386, therefore loss of one register\n> is less noticeable.\n\nAccording to the x86_64 ABI, x86_64 has no explicit GOT pointer.\nMeaning: no additional register needed at all, as x86_64 has IP-relative\naddressing. Thus, compiling with -fPIC on x86_64 probably has no\nnegative implications at all (?).\n\nJosef\n"},{"id":"22851","messageId":"e81jr5$l1c$1@sea.gmane.org","threadId":"4699","inReplyTo":"1151527945.1619.17.camel@dv","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-06-29T22:22:37Z","receivedAt":"2006-06-29T22:22:37Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Pavel Roskin <proski@gnu.org> wrote:\n\n> On Wed, 2006-06-28 at 21:21 +0200, Marco Roeland wrote:\n>> I certainly do not know cases outside Linux where this might break on\n>> x86-64. I just tried to limit it to the case I could test. But perhaps\n>> someone with an x86-64 BSD or Solaris might try it?\n>> \n>> To paraphrase Dave Jones: I type 'make', it fails. Some 'git log' later\n>> I realise I have to manually define 'USE_PIC'. Hey, why doesn't it work\n>> automagically?\n> \n> Automagically?  You should search the archives for \"Autoconf\".  When I\n> proposed using it, the hell broke loose.  Now let me indulge in\n> Schadenfreude :-)\n\nIf I remember correctly everybody agreed that autoconf is least evil of the\nwhole autotools package. pasky suggested to write ./configure script by\nhand on #git...\n\nI'm trying to do inobtrusive _optional_ autoconf support in the patch series\nbeginning with\n  Message-ID: <200606290301.51657.jnareb@gmail.com>\n  http://permalink.gmane.org/gmane.comp.version-control.git/22832\n\nPlease wait for the patch moving ./autoconf output away from config.mak\n(as some people here requested), and do contribute! My autoconf/m4\nexperience is nonexistent (I'm learning it as I go). See comments in the\nthird [PATCH/RFC] in series.\n\nBTW. patches are against master.\n\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"22860","messageId":"1151625780.10358.13.camel@dv","threadId":"4699","inReplyTo":"e81jr5$l1c$1@sea.gmane.org","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Pavel Roskin","fromEmail":"proski@gnu.org","sentAt":"2006-06-30T00:03:00Z","receivedAt":"2006-06-30T00:03:00Z","isPatch":true,"sender":{"key":"proski@gnu.org","avatar":null},"body":"Hi, Jakub!\n\nI don't have the newsgroup access, so I'm copying to the mailing list\ninstead.\n\nOn Fri, 2006-06-30 at 00:22 +0200, Jakub Narebski wrote:\n\n> If I remember correctly everybody agreed that autoconf is least evil of the\n> whole autotools package.\n\nSort of.  Some people were less dismissive than others.\n\n>  pasky suggested to write ./configure script by\n> hand on #git...\n\nThat's probably not a good idea.  Autoconf can do this very well if used\ncorrectly.  And I'm ready to help when it comes to correctness.\n\n> I'm trying to do inobtrusive _optional_ autoconf support in the patch series\n> beginning with\n>   Message-ID: <200606290301.51657.jnareb@gmail.com>\n>   http://permalink.gmane.org/gmane.comp.version-control.git/22832\n\nThe problem with optional support is that you suddenly have two\nalternative mechanisms to adjust the build to the system, and both\nshould be kept in a  working condition.  But it's a good first step.\n\n> Please wait for the patch moving ./autoconf output away from config.mak\n> (as some people here requested), and do contribute! My autoconf/m4\n> experience is nonexistent (I'm learning it as I go). See comments in the\n> third [PATCH/RFC] in series.\n> \n> BTW. patches are against master.\n\nThe link doesn't show the \"@\" characters correctly.  Maybe somebody\ncould establish a git repository?  Ideally, the autoconf changes should\ngo to one of the Git branches.\n\n-- \nRegards,\nPavel Roskin\n"},{"id":"22866","messageId":"200606300229.17607.jnareb@gmail.com","threadId":"4699","inReplyTo":"1151625780.10358.13.camel@dv","subject":"Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-06-30T00:29:12Z","receivedAt":"2006-06-30T00:29:12Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Pavel Roskin write:\n> I don't have the newsgroup access, so I'm copying to the mailing list\n> instead.\n\nNewsgroup should be tied to mailing list, so messages on newsgroup \nwould appear on mailing list and vice versa. Patches were sent to \nmailing list.\n\n>> I'm trying to do inobtrusive _optional_ autoconf support in the patch series\n>> beginning with\n>>   Message-ID: <200606290301.51657.jnareb@gmail.com>\n>>   http://permalink.gmane.org/gmane.comp.version-control.git/22832\n> \n> The problem with optional support is that you suddenly have two\n> alternative mechanisms to adjust the build to the system, and both\n> should be kept in a  working condition.  But it's a good first step.\n\nThe idea I started working with autoconf was to be able to say\n%configure in .spec file. Then I thought that it would be nice\nto have --without-expat, --with-curl=PATH etc. options. Then...\n\nAdditionally, optional support would be easier to accept I think.\n\n[repeated]\n>>   Message-ID: <200606290301.51657.jnareb@gmail.com>\n>>   http://permalink.gmane.org/gmane.comp.version-control.git/22832\n> \n> The link doesn't show the \"@\" characters correctly.  Maybe somebody\n> could establish a git repository?  Ideally, the autoconf changes should\n> go to one of the Git branches.\n\nTry yet another git mailing list archive:\n  http://www.gelato.unsw.edu.au/archives/git/0606/23225.html\n\nI'll try to publish changes at\n  http://front.fuw.edu.pl/jnareb/scm/git.git/\n  http://front.fuw.edu.pl/cgi-bin/jnareb/gitweb.cgi?p=git.git\nafter I learn how to setup ssh proxy or equivalent...\n\n-- \nJakub Narebski\nPoland\n"}]}