I relocated to US in 2007 after working in India for about 8 years. My best friend also moved to US and we were both working in the same company in the US. Once, while negotiating a raise, my friend brought up my salary since he knew what I was making. The HR manager sent me a polite, but firm email asking me never to discuss my salary with colleagues in the future. She painted it as a cultural thing -- that in the US people don't discuss what they make. Since then I have never disclosed my salary details to my colleague - the subject never came up actually.
It is funny how it is totally uncool to discuss your salary with your colleague, but you are expected to disclose it when asked by a stranger working for a competitor.