Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!swrinde!ucsd!nosc!logicon.arpa!trantor.harris-atd.com!x102c!bbadger From: bbadger@x102c.harris-atd.com (Badger BA 64810) Newsgroups: comp.bugs.sys5 Subject: Re: Bad LALIGN(p) define for pdp11 in sysmacros.h Message-ID: <2734@trantor.harris-atd.com> Date: 28 Sep 89 20:38:52 GMT References: <2721@trantor.harris-atd.com> <11150@smoke.BRL.MIL> Sender: news@trantor.harris-atd.com Reply-To: bbadger@x102c.harris-atd.com (Badger BA 64810) Organization: Harris GISD, Melbourne, FL Lines: 62 In article <11150@smoke.BRL.MIL> gwyn@brl.arpa (Doug Gwyn) writes: >In article <2721@trantor.harris-atd.com> bbadger@x102c.harris-atd.com (Badger BA 64810) writes: >>Now the LALIGN(p) matches the one defined for when >>``#if vax | i386'' is in effect (not shown here). > >Yeah, and now you've broken it. PDP-11 longs need be aligned >only on a word boundary, not on a longword boundary. > Well, I thought that longs might only be aligned to even bytes, but then shouldn't the definition of LALIGN be the same as IALIGN? #ifdef pdp11 #define SALIGN(p) (char *)(((int)p+1) & ~1) #define IALIGN(p) (char *)(((int)p+1) & ~1) #define LALIGN(p) (char *)(((int)p+1) & ~3) /* ??? */ #endif #if vax | i386 #define SALIGN(p) (char *)(((int)p+1) & ~1) #define IALIGN(p) (char *)(((int)p+3) & ~3) #define LALIGN(p) (char *)(((int)p+3) & ~3) #endif An generalized alignment macro would always use the same number like this: #define ALIGN(p,m) (char *)(((int)p+m) & ~m) p +1&~3 +3&~3 0 0 0 1 0 4 2 0 4 3 4 4 4 4 4 5 4 8 6 4 8 7 8 8 8 8 8 Is there any possible reason to use the +1&~3 pattern? I can't see it. >>1. Technical: Is it really a good idea to convert to (int)? > >On a PDP-11, sure. I was more worried about the VAX. #define LALIGN(p) (char *)(((int)p+3) & ~3) However, I guess since each macro set is machine dependent, it could be changed to handle whatever int size that pointers turned out to be. I guess that there isn't a machine-independent way to do this. It should only be a problem if (sizeof(int) != sizeof(* char)). > >>2. Procedural: What's the official way to submit these things to ATT? > >Submit a software trouble report. If you have subscribed to >the appropriate level of software support, you should have a >folder that contains forms and instructions. > >>Is there an ATT network address which accepts bug reports, like Sun has? > >There is (or was) a command "trenter" that would guide you through >the steps of filling out a trouble report then e-mail it somewhere. No such command here. ----- - - - - - - - ---- Bernard A. Badger Jr. 407/984-6385 |``Get a LIFE!'' -- J.H. Conway Harris GISD, Melbourne, FL 32902 |Buddy, can you paradigm? Internet: bbadger%x102c@trantor.harris-atd.com|'s/./&&/g' Tom sed expansively.